Whamcloud - gitweb
LU-13277 lnet: Discovery thread can deadlock on shutdown
[fs/lustre-release.git] / lnet / lnet / peer.c
index e4a6d49..fe4f028 100644 (file)
@@ -3291,8 +3291,10 @@ static int lnet_peer_discovery(void *arg)
                        lnet_push_target_resize();
 
                lnet_net_lock(LNET_LOCK_EX);
-               if (the_lnet.ln_dc_state == LNET_DC_STATE_STOPPING)
+               if (the_lnet.ln_dc_state == LNET_DC_STATE_STOPPING) {
+                       lnet_net_unlock(LNET_LOCK_EX);
                        break;
+               }
 
                /*
                 * Process all incoming discovery work requests.  When
@@ -3419,7 +3421,7 @@ int lnet_peer_discovery_start(void)
        if (the_lnet.ln_dc_state != LNET_DC_STATE_SHUTDOWN)
                return -EALREADY;
 
-       the_lnet.ln_dc_eq = LNetEQAlloc(0, lnet_discovery_event_handler);
+       the_lnet.ln_dc_eq = LNetEQAlloc(lnet_discovery_event_handler);
        if (IS_ERR(the_lnet.ln_dc_eq)) {
                rc = PTR_ERR(the_lnet.ln_dc_eq);
                CERROR("Can't allocate discovery EQ: %d\n", rc);