Re: [22/27] VFS: Fix automount for negative autofs dentries

From: Ian Kent
Date: Sun Oct 23 2011 - 07:41:28 EST


On Sun, 2011-10-23 at 08:24 +0200, Greg KH wrote:
> 3.0-stable review patch. If anyone has any objections, please let us know.

Yes, as others point out, either the patch needs to be correctly
backported or the dependent patches need to be pulled in.

I can do either of these, what would you prefer?

>
> ------------------
>
> From: David Howells <dhowells@xxxxxxxxxx>
>
> commit 5a30d8a2b8ddd5102c440c7e5a7c8e1fd729c818 upstream.
> [ backport for 3.0.x: LOOKUP_PARENT => LOOKUP_CONTINUE by Chuck Ebbert
> <cebbert@xxxxxxxxxx> ]
>
> Autofs may set the DCACHE_NEED_AUTOMOUNT flag on negative dentries. These
> need attention from the automounter daemon regardless of the LOOKUP_FOLLOW flag.
>
> Signed-off-by: David Howells <dhowells@xxxxxxxxxx>
> Acked-by: Ian Kent <raven@xxxxxxxxxx>
> Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
> Cc: Chuck Ebbert <cebbert@xxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
>
> ---
> fs/namei.c | 24 +++++++++++++++---------
> 1 file changed, 15 insertions(+), 9 deletions(-)
>
> --- a/fs/namei.c
> +++ b/fs/namei.c
> @@ -779,19 +779,25 @@ static int follow_automount(struct path
> if ((flags & LOOKUP_NO_AUTOMOUNT) && !(flags & LOOKUP_CONTINUE))
> return -EISDIR; /* we actually want to stop here */
>
> - /* We want to mount if someone is trying to open/create a file of any
> - * type under the mountpoint, wants to traverse through the mountpoint
> - * or wants to open the mounted directory.
> - *
> + /*
> * We don't want to mount if someone's just doing a stat and they've
> * set AT_SYMLINK_NOFOLLOW - unless they're stat'ing a directory and
> * appended a '/' to the name.
> */
> - if (!(flags & LOOKUP_FOLLOW) &&
> - !(flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY |
> - LOOKUP_OPEN | LOOKUP_CREATE)))
> - return -EISDIR;
> -
> + if (!(flags & LOOKUP_FOLLOW)) {
> + /* We do, however, want to mount if someone wants to open or
> + * create a file of any type under the mountpoint, wants to
> + * traverse through the mountpoint or wants to open the mounted
> + * directory.
> + * Also, autofs may mark negative dentries as being automount
> + * points. These will need the attentions of the daemon to
> + * instantiate them before they can be used.
> + */
> + if (!(flags & (LOOKUP_PARENT | LOOKUP_DIRECTORY |
> + LOOKUP_OPEN | LOOKUP_CREATE)) &&
> + path->dentry->d_inode)
> + return -EISDIR;
> + }
> current->total_link_count++;
> if (current->total_link_count >= 40)
> return -ELOOP;
>
>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/