linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Brian Foster <bfoster@redhat.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Dave Chinner <david@fromorbit.com>, Ian Kent <raven@themaw.net>,
	xfs <linux-xfs@vger.kernel.org>,
	"Darrick J. Wong" <djwong@kernel.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	David Howells <dhowells@redhat.com>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/2] xfs: make sure link path does not go away at access
Date: Tue, 16 Nov 2021 11:04:50 -0500	[thread overview]
Message-ID: <YZPWoj6mM/N2reKz@bfoster> (raw)
In-Reply-To: <CAJfpegsvL6SjNZdk=J9N-gYWZK0uhg_bT579WRHyVisW1sGZ=Q@mail.gmail.com>

On Tue, Nov 16, 2021 at 11:12:13AM +0100, Miklos Szeredi wrote:
> On Tue, 16 Nov 2021 at 04:01, Dave Chinner <david@fromorbit.com> wrote:
> 
> > I *think* that just zeroing the buffer means the race condition
> > means the link resolves as either wholly intact, partially zeroed
> > with trailing zeros in the length, wholly zeroed or zero length.
> > Nothing will crash, the link string is always null terminated even
> > if the length is wrong, and so nothing bad should happen as a result
> > of zeroing the symlink buffer when it gets evicted from the VFS
> > inode cache after unlink.
> 
> That's my thinking.  However, modifying the buffer while it is being
> processed does seem pretty ugly, and I have to admit that I don't
> understand why this needs to be done in either XFS or EXT4.
> 

Agreed. I'm also not following what problem this is intended to solve..?

Hmm.. it looks to me that the ext4 code zeroes the symlink to
accommodate its own truncate/teardown code because it will access the
field via a structure to interpret it as a (empty?) data mapping. IOW,
it doesn't seem to have anything to do with the vfs or path
walks/lookups but rather is an internal implementation detail of ext4.
It would probably be best if somebody who knows ext4 better could
comment on that before we take anything from it. Of course, there is the
fact that ext4 doing this seemingly doesn't disturb/explode the vfs, but
really neither does the current XFS code so it's kind of hard to say
whether one approach is any more or less correct purely based on the
fact that the code exists.

Brian

> > The root cause is "allowing an inode to be reused without waiting
> > for an RCU grace period to expire". This might seem pedantic, but
> > "without waiting for an rcu grace period to expire" is the important
> > part of the problem (i.e. the bug), not the "allowing an inode to be
> > reused" bit.
> 
> Yes.
> 
> Thanks,
> Miklos
> 


  reply	other threads:[~2021-11-16 16:05 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-11  3:39 [PATCH 1/2] vfs: check dentry is still valid in get_link() Ian Kent
2021-11-11  3:39 ` [PATCH 2/2] xfs: make sure link path does not go away at access Ian Kent
2021-11-11 16:08   ` Brian Foster
2021-11-11 23:10     ` Ian Kent
2021-11-12 11:47       ` Brian Foster
2021-11-13  5:17         ` Ian Kent
2021-11-12  0:32   ` Dave Chinner
2021-11-12  1:26     ` Ian Kent
2021-11-12  7:23     ` Miklos Szeredi
2021-11-14 23:18       ` Dave Chinner
2021-11-15  9:21         ` Miklos Szeredi
2021-11-15 22:24           ` Dave Chinner
2021-11-16  1:03             ` Ian Kent
2021-11-16  3:01               ` Dave Chinner
2021-11-16 10:12                 ` Miklos Szeredi
2021-11-16 16:04                   ` Brian Foster [this message]
2021-11-16 13:38                 ` Ian Kent
2021-11-16 15:59                 ` Brian Foster
2021-11-17  0:22                   ` Dave Chinner
2021-11-17  2:19                     ` Ian Kent
2021-11-17 21:06                       ` Dave Chinner
2021-11-17 18:56                     ` Brian Foster
2021-11-17 21:48                       ` Dave Chinner
2021-11-19 19:44                         ` Brian Foster
2021-11-22  0:08                           ` Dave Chinner
2021-11-22 19:27                             ` Brian Foster
2021-11-22 23:26                               ` Dave Chinner
2021-11-24 20:56                                 ` Brian Foster
2021-12-15  3:54                                   ` Ian Kent
2021-12-15  5:06                                     ` Darrick J. Wong
2021-12-16  2:45                                       ` Ian Kent
2021-11-17 20:38   ` kernel test robot

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=YZPWoj6mM/N2reKz@bfoster \
    --to=bfoster@redhat.com \
    --cc=david@fromorbit.com \
    --cc=dhowells@redhat.com \
    --cc=djwong@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=raven@themaw.net \
    --cc=viro@zeniv.linux.org.uk \
    /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;
as well as URLs for NNTP newsgroup(s).