From: Christoph Hellwig <hch@infradead.org>
To: Andreas Gruenbacher <agruen@suse.de>
Cc: Christoph Hellwig <hch@infradead.org>,
linux-kernel@vger.kernel.org, John Johansen <jjohansen@suse.de>,
Jan Blunck <jblunck@suse.de>, Erez Zadok <ezk@cs.sunysb.edu>,
"Josef 'Jeff' Sipek" <jsipek@cs.sunysb.edu>
Subject: Re: [RFC 04/10] Temporary struct vfs_lookup in file_permission
Date: Thu, 9 Aug 2007 00:24:10 +0100 [thread overview]
Message-ID: <20070808232409.GA7876@infradead.org> (raw)
In-Reply-To: <200708082341.06329.agruen@suse.de>
On Wed, Aug 08, 2007 at 11:41:06PM +0200, Andreas Gruenbacher wrote:
> Lookup or not doesn't actually matter. Think of fchdir(2): it does a
> permission check, and it should also pass down the LOOKUP_CHDIR flag.
fchdir per defintion doesn't do any lookup, and it should not pretend to be
doing one.
> It's true that filesystems should never touch vfsmnts -- except for a few rare
> exceptions. Filesystem stacking is one. NFS silly-rename is another: if the
> vfsmnt of the object being silly-renamed were passed down to the file system,
> we would mntget() it. Right now there is a reference counting bug that allows
> to blow up the kernel by unmounting that mount point before the silly-renamed
> file is closed. (It's client-side only of course, but still.)
Wrong. Remember what we call unmount is two underlying operations:
- detach the subtree from the namespace, this is the vfsmount-based operation.
this one couldn't care less about an in-progress silly-rename
- actually teard down the filesystem. this is a superblock-related
operation, and you want your reference counting for the above case
to be on the superblock level if at all. A good explanation of
the bug you're seeing and how you intend to fix it outside of this
slightly heated thread might help, though..
Remember that passing down the vfsmount to the filesystem for namespace
operations is actually harmful, because all the namespace operations must
operate independent of the actual view (aka vfsmount) it's coming from -
all vfsmounts shared a single dentry subtree and operation on either of
them must give the same results.
> The vfsmnt that
> this patch passes down in file_permission() is not some crap as you chose to
> call it, it's the appropriate vfsmnt.
No, it's wrong. There is no path except for informal purposes attached to
a struct file. I created file_permission to document that clearly and
people don't try things like this. There's lots of chances where fs passing
has happened, were into a lazily detached tree, after a pviot_root, etc where
trying to do anything that remotely looks like pathname based operation just
doesn't make any sense in this case.
next prev parent reply other threads:[~2007-08-08 23:24 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-08 17:16 [RFC 00/10] Split up struct nameidata (take 3) Andreas Gruenbacher
2007-08-08 17:16 ` [RFC 01/10] Split up struct nameidata Andreas Gruenbacher
2007-08-08 19:32 ` Christoph Hellwig
2007-08-09 8:26 ` atomic open (was Re: [RFC 01/10] Split up struct nameidata) Miklos Szeredi
2007-08-10 14:42 ` [RFC 01/10] Split up struct nameidata Andreas Gruenbacher
2007-08-10 14:22 ` [patch 1/4] Introduce pathput Andreas Gruenbacher
2007-08-29 19:07 ` Christoph Hellwig
2007-09-14 16:36 ` Christoph Hellwig
2007-08-10 14:22 ` [patch 2/4] Use pathput in a few more places Andreas Gruenbacher
2007-08-29 19:08 ` Christoph Hellwig
2007-08-30 15:01 ` [FIX] mntput called before dput in afs Andreas Gruenbacher
2007-08-30 15:15 ` David Howells
2007-08-30 15:56 ` David Howells
2007-08-10 14:22 ` [patch 3/4] Introduce pathget Andreas Gruenbacher
2007-08-29 19:09 ` Christoph Hellwig
2007-08-10 14:22 ` [patch 4/4] Switch to struct path in fs_struct Andreas Gruenbacher
2007-08-29 19:12 ` Christoph Hellwig
2007-08-08 17:16 ` [RFC 02/10] Switch from nd->{mnt,dentry} to nd->lookup.path.{mnt,dentry} Andreas Gruenbacher
2007-08-08 17:16 ` [RFC 03/10] Pass no unnecessary information to iop->permission Andreas Gruenbacher
2007-08-08 17:16 ` [RFC 04/10] Temporary struct vfs_lookup in file_permission Andreas Gruenbacher
2007-08-08 17:58 ` Josef Sipek
2007-08-08 18:56 ` Andreas Gruenbacher
2007-08-08 19:25 ` Christoph Hellwig
2007-08-08 21:41 ` Andreas Gruenbacher
2007-08-08 23:24 ` Christoph Hellwig [this message]
2007-08-09 17:23 ` Andreas Gruenbacher
2007-08-08 17:16 ` [RFC 05/10] Use vfs_permission instead of file_permission in sys_fchdir Andreas Gruenbacher
2007-08-08 19:26 ` Christoph Hellwig
2007-08-08 17:16 ` [RFC 06/10] Use vfs_permission instead of file_permission in do_path_lookup Andreas Gruenbacher
2007-08-08 19:27 ` Christoph Hellwig
2007-08-08 17:16 ` [RFC 07/10] Pass no unnecessary information to iop->create Andreas Gruenbacher
2007-08-08 17:16 ` [RFC 08/10] Pass no NULL vfs_lookup to vfs_create Andreas Gruenbacher
2007-08-08 19:36 ` Christoph Hellwig
2007-08-08 17:16 ` [RFC 09/10] Pass no unnecessary information to dop->d_revalidate Andreas Gruenbacher
2007-08-08 17:16 ` [RFC 10/10] Pass no unnecessary information to iop->lookup Andreas Gruenbacher
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=20070808232409.GA7876@infradead.org \
--to=hch@infradead.org \
--cc=agruen@suse.de \
--cc=ezk@cs.sunysb.edu \
--cc=jblunck@suse.de \
--cc=jjohansen@suse.de \
--cc=jsipek@cs.sunysb.edu \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox