Re: Patch "erofs: reliably distinguish block based and fscache mode" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxx/

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@xxxxxxxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxx> know about it.


 From 7af2ae1b1531feab5d38ec9c8f472dc6cceb4606 Mon Sep 17 00:00:00 2001
From: Christian Brauner <brauner@xxxxxxxxxx>
Date: Fri, 19 Apr 2024 20:36:11 +0800
Subject: erofs: reliably distinguish block based and fscache mode

From: Christian Brauner <brauner@xxxxxxxxxx>

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@xxxxxxxxxx>
Signed-off-by: Baokun Li <libaokun1@xxxxxxxxxx>
Reviewed-by: Jingbo Xu <jefflexu@xxxxxxxxxxxxxxxxx>
Reviewed-by: Gao Xiang <hsiangkao@xxxxxxxxxxxxxxxxx>
Reviewed-by: Chao Yu <chao@xxxxxxxxxx>
Link: https://lore.kernel.org/r/20240419123611.947084-3-libaokun1@xxxxxxxxxx
Signed-off-by: Gao Xiang <hsiangkao@xxxxxxxxxxxxxxxxx>
Signed-off-by: Xiangyu Chen <xiangyu.chen@xxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
  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@xxxxxxxxxx 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





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux