Patch "erofs: reliably distinguish block based and fscache mode" has been added to the 6.1-stable tree
Gao Xiang
hsiangkao at linux.alibaba.com
Fri Dec 6 16:05:21 AEDT 2024
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/686626cd-7dcd-4931-bf55-108522b9bfeb@linux.alibaba.com/
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, gregkh at linuxfoundation.org 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 <stable at vger.kernel.org> know about it.
>
>
> From 7af2ae1b1531feab5d38ec9c8f472dc6cceb4606 Mon Sep 17 00:00:00 2001
> From: Christian Brauner <brauner at kernel.org>
> Date: Fri, 19 Apr 2024 20:36:11 +0800
> Subject: erofs: reliably distinguish block based and fscache mode
>
> From: Christian Brauner <brauner at kernel.org>
>
> 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 <brauner at kernel.org>
> Signed-off-by: Baokun Li <libaokun1 at huawei.com>
> Reviewed-by: Jingbo Xu <jefflexu at linux.alibaba.com>
> Reviewed-by: Gao Xiang <hsiangkao at linux.alibaba.com>
> Reviewed-by: Chao Yu <chao at kernel.org>
> Link: https://lore.kernel.org/r/20240419123611.947084-3-libaokun1@huawei.com
> Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
> Signed-off-by: Xiangyu Chen <xiangyu.chen at windriver.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> ---
> 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_b
> return;
> }
>
> - 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 brauner at kernel.org 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
More information about the Linux-erofs
mailing list