From: "Theodore Ts'o" <tytso@mit.edu>
To: "Darrick J. Wong" <djwong@kernel.org>
Cc: Ahmet Eray Karadag <eraykrdg1@gmail.com>,
adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org,
linux-kernel@vger.kernel.org,
Albin Babu Varghese <albinbabuvarghese20@gmail.com>
Subject: Re: [PATCH] Fix: ext4: guard against EA inode refcount underflow in xattr update
Date: Fri, 19 Sep 2025 10:45:48 -0400 [thread overview]
Message-ID: <20250919144548.GE416742@mit.edu> (raw)
In-Reply-To: <20250918181801.GI8084@frogsfrogsfrogs>
On Thu, Sep 18, 2025 at 11:18:01AM -0700, Darrick J. Wong wrote:
> > diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
> > index 5a6fe1513fd2..a056f98579c3 100644
> > --- a/fs/ext4/xattr.c
> > +++ b/fs/ext4/xattr.c
> > @@ -1030,6 +1030,13 @@ static int ext4_xattr_inode_update_ref(handle_t *handle, struct inode *ea_inode,
> >
> > ref_count = ext4_xattr_inode_get_ref(ea_inode);
> > ref_count += ref_change;
> > + if (ref_count < 0) {
>
> Shouldn't this check ref_count >= ref_change *before* updating it?
As Ahmet pointed out, so long as we don't actually update the on-disk
data structure, it's fine. The issue I'm more concerned about is that
if ref_change is +1, we could also have an overflow where we go from
an ridiculously large positive number (~0) to 0.
Your change might fix one potential syzbot-discovered issue caused by
a maliciously fuzzed file system, but we should harden it against
similar problems going in the opposite problem.
Cheers,
- Ted
next prev parent reply other threads:[~2025-09-19 14:46 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-18 17:55 [PATCH] Fix: ext4: guard against EA inode refcount underflow in xattr update Ahmet Eray Karadag
2025-09-18 18:18 ` Darrick J. Wong
2025-09-19 14:45 ` Theodore Ts'o [this message]
2025-09-20 2:13 ` [PATCH v2] " Ahmet Eray Karadag
2025-09-23 23:39 ` Darrick J. Wong
2025-09-24 22:53 ` Albin Babu Varghese
2025-09-26 21:47 ` Theodore Ts'o
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=20250919144548.GE416742@mit.edu \
--to=tytso@mit.edu \
--cc=adilger.kernel@dilger.ca \
--cc=albinbabuvarghese20@gmail.com \
--cc=djwong@kernel.org \
--cc=eraykrdg1@gmail.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.