diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 60c74c1f1ea9773f863c7a52aee1f4bcc4f88638..32bd696b39a8c0e123fb05352714003fe23962f7 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -906,8 +906,8 @@ static void __unregister_linger_request(struct ceph_osd_client *osdc,
 					struct ceph_osd_request *req)
 {
 	dout("__unregister_linger_request %p\n", req);
+	list_del_init(&req->r_linger_item);
 	if (req->r_osd) {
-		list_del_init(&req->r_linger_item);
 		list_del_init(&req->r_linger_osd);
 
 		if (list_empty(&req->r_osd->o_requests) &&