On Fri, Aug 04, 2023 at 04:36:49PM +0200, Christian Brauner wrote: > FFS Good spot, this explains the missing dropping of s_umount. But I don't think it's doing the right thing for MTD mount romfs, we'll need something like this: diff --git a/fs/romfs/super.c b/fs/romfs/super.c index c59b230d55b435..4510a38861cfbe 100644 --- a/fs/romfs/super.c +++ b/fs/romfs/super.c @@ -583,16 +583,19 @@ static int romfs_init_fs_context(struct fs_context *fc) */ static void romfs_kill_sb(struct super_block *sb) { + generic_shutdown_super(sb); + #ifdef CONFIG_ROMFS_ON_MTD if (sb->s_mtd) { - kill_mtd_super(sb); - return; + put_mtd_device(sb->s_mtd); + sb->s_mtd = NULL; } #endif #ifdef CONFIG_ROMFS_ON_BLOCK if (sb->s_bdev) { - kill_block_super(sb); - return; + sb->s_bdev->bd_super = NULL; + sync_blockdev(sb->s_bdev); + blkdev_put(sb->s_bdev, sb->s_type); } #endif }