Hi XiangYu, Just noticed that. Why it's needed for Linux 6.1 LTS? Just see my reply, I think 6.1 LTS is not impacted: https://lore.kernel.org/r/[email protected]/
Also, it seems some dependenies are missing, just backporting this commit will break EROFS. Hi Greg, Please help drop this patch from 6.1 queue before more explanations, thanks! Thanks, Gao Xiang On 2024/12/2 19:48, [email protected] wrote:
This is a note to let you know that I've just added the patch titled erofs: reliably distinguish block based and fscache mode to the 6.1-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: erofs-reliably-distinguish-block-based-and-fscache-mode.patch and it can be found in the queue-6.1 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it. From 7af2ae1b1531feab5d38ec9c8f472dc6cceb4606 Mon Sep 17 00:00:00 2001 From: Christian Brauner <[email protected]> Date: Fri, 19 Apr 2024 20:36:11 +0800 Subject: erofs: reliably distinguish block based and fscache mode From: Christian Brauner <[email protected]> commit 7af2ae1b1531feab5d38ec9c8f472dc6cceb4606 upstream. When erofs_kill_sb() is called in block dev based mode, s_bdev may not have been initialised yet, and if CONFIG_EROFS_FS_ONDEMAND is enabled, it will be mistaken for fscache mode, and then attempt to free an anon_dev that has never been allocated, triggering the following warning: ============================================ ida_free called for id=0 which is not allocated. WARNING: CPU: 14 PID: 926 at lib/idr.c:525 ida_free+0x134/0x140 Modules linked in: CPU: 14 PID: 926 Comm: mount Not tainted 6.9.0-rc3-dirty #630 RIP: 0010:ida_free+0x134/0x140 Call Trace: <TASK> erofs_kill_sb+0x81/0x90 deactivate_locked_super+0x35/0x80 get_tree_bdev+0x136/0x1e0 vfs_get_tree+0x2c/0xf0 do_new_mount+0x190/0x2f0 [...] ============================================ Now when erofs_kill_sb() is called, erofs_sb_info must have been initialised, so use sbi->fsid to distinguish between the two modes. Signed-off-by: Christian Brauner <[email protected]> Signed-off-by: Baokun Li <[email protected]> Reviewed-by: Jingbo Xu <[email protected]> Reviewed-by: Gao Xiang <[email protected]> Reviewed-by: Chao Yu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Gao Xiang <[email protected]> Signed-off-by: Xiangyu Chen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]> --- fs/erofs/super.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -892,7 +892,7 @@ static int erofs_init_fs_context(struct */ static void erofs_kill_sb(struct super_block *sb) { - struct erofs_sb_info *sbi; + struct erofs_sb_info *sbi = EROFS_SB(sb);WARN_ON(sb->s_magic != EROFS_SUPER_MAGIC); @@ -902,15 +902,11 @@ static void erofs_kill_sb(struct super_breturn; }- if (erofs_is_fscache_mode(sb))+ if (IS_ENABLED(CONFIG_EROFS_FS_ONDEMAND) && sbi->fsid) kill_anon_super(sb); else kill_block_super(sb);- sbi = EROFS_SB(sb);- if (!sbi) - return; - erofs_free_dev_context(sbi->devs); fs_put_dax(sbi->dax_dev, NULL); erofs_fscache_unregister_fs(sb); Patches currently in stable-queue which might be from [email protected] are queue-6.1/cachefiles-fix-missing-pos-updates-in-cachefiles_ond.patch queue-6.1/hfsplus-don-t-query-the-device-logical-block-size-mu.patch queue-6.1/netfs-fscache-add-a-memory-barrier-for-fscache_volum.patch queue-6.1/fs-inode-prevent-dump_mapping-accessing-invalid-dent.patch queue-6.1/initramfs-avoid-filename-buffer-overrun.patch queue-6.1/erofs-reliably-distinguish-block-based-and-fscache-mode.patch queue-6.1/fs_parser-update-mount_api-doc-to-match-function-sig.patch queue-6.1/selftests-mount_setattr-fix-failures-on-64k-page_siz.patch
