mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Viacheslav Dubeyko <slava@dubeyko.com>
To: "Yangtao Li" <frank.li@vivo.com>,
	glaubitz@physik.fu-berlin.de,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Ernesto A. Fernández" <ernesto.mnd.fernandez@gmail.com>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	 syzbot+8c0bc9f818702ff75b76@syzkaller.appspotmail.com
Subject: Re: [PATCH] hfsplus: remove mutex_lock check in hfsplus_free_extents
Date: Wed, 14 May 2025 19:01:31 -0700	[thread overview]
Message-ID: <58e07322349210ea1c7bf0a23278087724e95dfd.camel@dubeyko.com> (raw)
In-Reply-To: <20250511110856.543944-1-frank.li@vivo.com>

On Sun, 2025-05-11 at 05:08 -0600, Yangtao Li wrote:
> Syzbot reported an issue in hfsplus subsystem:
> 

Could you please add the issue into the issues list [1] (if it is not
there yet) and to assign it on yourself?

> ------------[ cut here ]------------
> WARNING: CPU: 0 PID: 4400 at fs/hfsplus/extents.c:346
> 	hfsplus_free_extents+0x700/0xad0
> Call Trace:
> <TASK>
> hfsplus_file_truncate+0x768/0xbb0 fs/hfsplus/extents.c:606
> hfsplus_write_begin+0xc2/0xd0 fs/hfsplus/inode.c:56
> cont_expand_zero fs/buffer.c:2383 [inline]
> cont_write_begin+0x2cf/0x860 fs/buffer.c:2446
> hfsplus_write_begin+0x86/0xd0 fs/hfsplus/inode.c:52
> generic_cont_expand_simple+0x151/0x250 fs/buffer.c:2347
> hfsplus_setattr+0x168/0x280 fs/hfsplus/inode.c:263
> notify_change+0xe38/0x10f0 fs/attr.c:420
> do_truncate+0x1fb/0x2e0 fs/open.c:65
> do_sys_ftruncate+0x2eb/0x380 fs/open.c:193
> do_syscall_x64 arch/x86/entry/common.c:50 [inline]
> do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
> entry_SYSCALL_64_after_hwframe+0x63/0xcd
> 
> To avoid deadlock, Commit 31651c607151 ("hfsplus: avoid deadlock
> on file truncation") unlock extree before hfsplus_free_extents(),
> and add check wheather extree is locked in hfsplus_free_extents().
> 
> However, when operations such as hfsplus_file_release,
> hfsplus_setattr, hfsplus_unlink, and hfsplus_unlink are executed
> concurrently in different files, it is very likely to trigger the
> WARN_ON, which will lead syzbot and xfstest to consider it as an
> abnormality.
> 

Which particular xfstests' test-case(s) triggers the issue? Do we have
the easy reproducing path of it? How can I check the fix, finally?

> Since we already have alloc_mutex to protect alloc file modify,
> let's remove mutex_lock check.
> 

I don't think that I follow the point. The two mutexes are namely the
basis for potential deadlocks. Currently, I am not sure that we are
fixing the issue. Probably, we are trying to hide the symptoms of the
real issue without the clear understanding what is going wrong. I would
like to hear the explanation how the issue is happening and why the
warning removal can help here.

> Fixes: 31651c607151f ("hfsplus: avoid deadlock on file truncation")
> Reported-by: syzbot+8c0bc9f818702ff75b76@syzkaller.appspotmail.com
> Closes:
> https://lore.kernel.org/all/00000000000057fa4605ef101c4c@google.com/
> Signed-off-by: Yangtao Li <frank.li@vivo.com>
> ---
>  fs/hfsplus/extents.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/fs/hfsplus/extents.c b/fs/hfsplus/extents.c
> index a6d61685ae79..b1699b3c246a 100644
> --- a/fs/hfsplus/extents.c
> +++ b/fs/hfsplus/extents.c
> @@ -342,9 +342,6 @@ static int hfsplus_free_extents(struct
> super_block *sb,
>  	int i;
>  	int err = 0;
>  
> -	/* Mapping the allocation file may lock the extent tree */
> -	WARN_ON(mutex_is_locked(&HFSPLUS_SB(sb)->ext_tree-
> >tree_lock));
> -

I am not sure that it's the good idea to remove any warning because,
probably, we could not understand the real reason of the issue and we
simply trying to hind the symptoms of something more serious.

Current explanation doesn't sound reasonably well to me. I am not
convinced yet that it is proper fix and we see the reason of the issue.
I would like to hear more clear justification that we have to remove
this check.

Thanks,
Slava. 

>  	hfsplus_dump_extent(extent);
>  	for (i = 0; i < 8; extent++, i++) {
>  		count = be32_to_cpu(extent->block_count);

[1] https://github.com/hfs-linux-kernel/hfs-linux-kernel/issues

  reply	other threads:[~2025-05-15  2:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-11 11:08 Yangtao Li
2025-05-15  2:01 ` Viacheslav Dubeyko [this message]
2025-05-25 15:03   ` 回复: " 李扬韬
2025-05-27 21:49     ` Viacheslav Dubeyko
2025-05-28 17:01       ` 回复: " 李扬韬
2025-05-28 17:18         ` Viacheslav Dubeyko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=58e07322349210ea1c7bf0a23278087724e95dfd.camel@dubeyko.com \
    --to=slava@dubeyko.com \
    --cc=akpm@linux-foundation.org \
    --cc=ernesto.mnd.fernandez@gmail.com \
    --cc=frank.li@vivo.com \
    --cc=glaubitz@physik.fu-berlin.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=syzbot+8c0bc9f818702ff75b76@syzkaller.appspotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®