diff --git a/lustre/ptlrpc/import.c b/lustre/ptlrpc/import.c
index fe597070f80409a6649b3d5a4755b37b97956d4c..9104a6dbcab7768bbdd1b2294d0181551a1970ec 100644
--- a/lustre/ptlrpc/import.c
+++ b/lustre/ptlrpc/import.c
@@ -519,6 +519,7 @@ static int ptlrpc_connect_interpret(struct ptlrpc_request *request,
                 spin_unlock(&imp->imp_lock);
                 RETURN(0);
         }
+        spin_unlock(&imp->imp_lock);
 
         if (rc)
                 GOTO(out, rc);
@@ -528,6 +529,7 @@ static int ptlrpc_connect_interpret(struct ptlrpc_request *request,
         msg_flags = lustre_msg_get_op_flags(request->rq_repmsg);
 
         /* All imports are pingable */
+        spin_lock(&imp->imp_lock);
         imp->imp_pingable = 1;
 
         if (aa->pcaa_initial_connect) {