--- x/fs/super.c +++ y/fs/super.c @@ -451,7 +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 @@ -472,6 +471,7 @@ void deactivate_locked_super(struct supe hlist_del_init(&s->s_instances); spin_unlock(&sb_lock); + fs->kill_sb(s); /* * Let concurrent mounts know that this thing is really dead. * We don't need @sb->s_umount here as every concurrent caller