All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Kent <raven@themaw.net>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	autofs mailing list <autofs@vger.kernel.org>,
	Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Omar Sandoval <osandov@osandov.com>
Subject: Re: [PATCH 6/8] autofs - use path_is_mountpoint() to fix unreliable d_mountpoint() checks
Date: Thu, 27 Oct 2016 10:51:40 +0800	[thread overview]
Message-ID: <1477536700.2898.16.camel@themaw.net> (raw)
In-Reply-To: <20161027021753.GJ19539@ZenIV.linux.org.uk>

On Thu, 2016-10-27 at 03:17 +0100, Al Viro wrote:
> On Tue, Oct 11, 2016 at 01:34:18PM +0800, Ian Kent wrote:
> > 
> > +	path = file->f_path;
> > +
> >  	/*
> >  	 * An empty directory in an autofs file system is always a
> >  	 * mount point. The daemon must have failed to mount this
> > @@ -123,7 +126,7 @@ static int autofs4_dir_open(struct inode *inode, struct
> > file *file)
> >  	 * it.
> >  	 */
> >  	spin_lock(&sbi->lookup_lock);
> > -	if (!d_mountpoint(dentry) && simple_empty(dentry)) {
> > +	if (!path_is_mountpoint(&path) && simple_empty(dentry)) {
> Why not &file->f_path, provided that you constify that thing properly?

Yep, my bad, as pointed out by Eric.

Patches to fix that and constify a bunch of things will follow.

> 
> > 
> > +		if (rcu_walk) {
> > +			if (!path_is_mountpoint_rcu(path))
> > +				return -EISDIR;
> > +		} else {
> > +			if (!path_is_mountpoint(path))
> > +				return -EISDIR;
> IDGI.  What's the point of _having_ the _rcu() variant, anyway?  Here you
> are probably paying more in terms of i-cache footprint/branch prediction
> than you win on not doing that rcu_read_lock()/rcu_read_unlock()...
> 
> _rcu variants make sense when non-RCU case does something you can't do
> under RCU; here your path_is_mountpoint() is pretty close to being
> rcu_read_lock()+path_is_mountpoint_rcu()+rcu_read_unlock() anyway...

Again, my bad, I'll merge these two and post along with the follow up patches
above.

Thanks Al,
Ian

WARNING: multiple messages have this Message-ID (diff)
From: Ian Kent <raven@themaw.net>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	autofs mailing list <autofs@vger.kernel.org>,
	Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Omar Sandoval <osandov@osandov.com>
Subject: Re: [PATCH 6/8] autofs - use path_is_mountpoint() to fix unreliable d_mountpoint() checks
Date: Thu, 27 Oct 2016 10:51:40 +0800	[thread overview]
Message-ID: <1477536700.2898.16.camel@themaw.net> (raw)
In-Reply-To: <20161027021753.GJ19539@ZenIV.linux.org.uk>

On Thu, 2016-10-27 at 03:17 +0100, Al Viro wrote:
> On Tue, Oct 11, 2016 at 01:34:18PM +0800, Ian Kent wrote:
> > 
> > +	path = file->f_path;
> > +
> >  	/*
> >  	 * An empty directory in an autofs file system is always a
> >  	 * mount point. The daemon must have failed to mount this
> > @@ -123,7 +126,7 @@ static int autofs4_dir_open(struct inode *inode, struct
> > file *file)
> >  	 * it.
> >  	 */
> >  	spin_lock(&sbi->lookup_lock);
> > -	if (!d_mountpoint(dentry) && simple_empty(dentry)) {
> > +	if (!path_is_mountpoint(&path) && simple_empty(dentry)) {
> Why not &file->f_path, provided that you constify that thing properly?

Yep, my bad, as pointed out by Eric.

Patches to fix that and constify a bunch of things will follow.

> 
> > 
> > +		if (rcu_walk) {
> > +			if (!path_is_mountpoint_rcu(path))
> > +				return -EISDIR;
> > +		} else {
> > +			if (!path_is_mountpoint(path))
> > +				return -EISDIR;
> IDGI.  What's the point of _having_ the _rcu() variant, anyway?  Here you
> are probably paying more in terms of i-cache footprint/branch prediction
> than you win on not doing that rcu_read_lock()/rcu_read_unlock()...
> 
> _rcu variants make sense when non-RCU case does something you can't do
> under RCU; here your path_is_mountpoint() is pretty close to being
> rcu_read_lock()+path_is_mountpoint_rcu()+rcu_read_unlock() anyway...

Again, my bad, I'll merge these two and post along with the follow up patches
above.

Thanks Al,
Ian
--
To unsubscribe from this list: send the line "unsubscribe autofs" in

  reply	other threads:[~2016-10-27  2:51 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-11  5:33 [PATCH 1/8] vfs - change d_manage() to take a struct path Ian Kent
2016-10-11  5:33 ` [PATCH 2/8] vfs - add path_is_mountpoint() helper Ian Kent
2016-10-11  5:34 ` [PATCH 3/8] vfs - add path_has_submounts() Ian Kent
2016-10-11  5:34 ` [PATCH 4/8] autofs - change autofs4_expire_wait() to take struct path Ian Kent
2016-10-11  5:34 ` [PATCH 5/8] autofs - change autofs4_wait() " Ian Kent
2016-10-11  5:34   ` Ian Kent
2016-10-11  5:34 ` [PATCH 6/8] autofs - use path_is_mountpoint() to fix unreliable d_mountpoint() checks Ian Kent
2016-10-27  2:17   ` Al Viro
2016-10-27  2:51     ` Ian Kent [this message]
2016-10-27  2:51       ` Ian Kent
2016-10-11  5:34 ` [PATCH 7/8] autofs - use path_has_submounts() to fix unreliable have_submount() checks Ian Kent
2016-10-11  5:34   ` Ian Kent
2016-10-11  5:34 ` [PATCH 8/8] vfs - remove unused have_submounts() function Ian Kent
2016-10-11  5:34   ` Ian Kent
2016-10-11 16:04 ` [PATCH 1/8] vfs - change d_manage() to take a struct path Eric W. Biederman
2016-10-11 16:04   ` Eric W. Biederman
2016-10-11 23:47   ` Ian Kent
2016-10-11 23:47     ` Ian Kent
2016-10-19 19:40 ` Andrew Morton
2016-10-20 23:39   ` Ian Kent
2016-10-20 23:39     ` Ian Kent
2016-10-27  2:11     ` Al Viro
2016-10-27  2:11       ` Al Viro
2016-10-27  2:47       ` Ian Kent
2016-10-27  2:47         ` Ian Kent
2016-10-27  6:50         ` Ian Kent
2016-11-01  2:02           ` Ian Kent

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=1477536700.2898.16.camel@themaw.net \
    --to=raven@themaw.net \
    --cc=akpm@linux-foundation.org \
    --cc=autofs@vger.kernel.org \
    --cc=ebiederm@xmission.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=osandov@osandov.com \
    --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 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.