diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index 1a8e20ef35bf6fd15ef7e78fe2f8c8f1fa79f098..5f3aa4d607def2fd104a8c2349f37555cb53cfc3 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -3746,6 +3746,7 @@ static void handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex,
 		WARN_ON(1);
 		tsession = NULL;
 		target = -1;
+		mutex_lock(&session->s_mutex);
 	}
 	goto retry;