diff --git a/lustre/ChangeLog b/lustre/ChangeLog
index c698c0493ea539587104fddc056fa70ddeb0d31e..a352b949772e5d563577dc69043d592cf8c76899 100644
--- a/lustre/ChangeLog
+++ b/lustre/ChangeLog
@@ -115,6 +115,13 @@ Bugzilla   : 11658
 Description: log_commit_thread vs filter_destroy race leads to crash
 Details    : Take import reference before releasing llog record semaphore
 
+Severity   : normal
+Frequency  : rare
+Bugzilla   : 12477
+Description: Wrong request locking in request set processing
+Details    : ptlrpc_check_set wrongly uses req->rq_lock for proctect add to
+	     imp_delayed_list, in this place should be used imp_lock.
+
 --------------------------------------------------------------------------------
 
 2007-05-03  Cluster File Systems, Inc. <info@clusterfs.com>
diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c
index 39a77aff776849a0c8f7c7d03b567f4790dd6746..b1ba7df821df42acfe39d9b77c03aea8a4fdc489 100644
--- a/lustre/ptlrpc/client.c
+++ b/lustre/ptlrpc/client.c
@@ -872,10 +872,10 @@ int ptlrpc_check_set(struct ptlrpc_request_set *set)
                                 /* Add this req to the delayed list so
                                    it can be errored if the import is
                                    evicted after recovery. */
-                                spin_lock(&req->rq_lock);
+                                spin_lock(&imp->imp_lock);
                                 list_add_tail(&req->rq_list,
                                               &imp->imp_delayed_list);
-                                spin_unlock(&req->rq_lock);
+                                spin_unlock(&imp->imp_lock);
                                 continue;
                         }