--- x/fs/super.c
+++ y/fs/super.c
@@ -451,15 +451,6 @@ void deactivate_locked_super(struct supe
 	struct file_system_type *fs = s->s_type;
 	if (atomic_dec_and_test(&s->s_active)) {
 		unregister_shrinker(&s->s_shrink);
-		fs->kill_sb(s);
-
-		/*
-		 * Since list_lru_destroy() may sleep, we cannot call it from
-		 * put_super(), where we hold the sb_lock. Therefore we destroy
-		 * the lru lists right now.
-		 */
-		list_lru_destroy(&s->s_dentry_lru);
-		list_lru_destroy(&s->s_inode_lru);
 
 		/*
 		 * Remove it from @fs_supers so it isn't found by new
@@ -472,6 +463,15 @@ void deactivate_locked_super(struct supe
 		hlist_del_init(&s->s_instances);
 		spin_unlock(&sb_lock);
 
+		fs->kill_sb(s);
+
+		/*
+		 * Since list_lru_destroy() may sleep, we cannot call it from
+		 * put_super(), where we hold the sb_lock. Therefore we destroy
+		 * the lru lists right now.
+		 */
+		list_lru_destroy(&s->s_dentry_lru);
+		list_lru_destroy(&s->s_inode_lru);
 		/*
 		 * Let concurrent mounts know that this thing is really dead.
 		 * We don't need @sb->s_umount here as every concurrent caller