Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db372915 authored by David Howells's avatar David Howells Committed by Al Viro
Browse files

Remove the automount through follow_link() kludge code from pathwalk



Remove the automount through follow_link() kludge code from pathwalk in favour
of using d_automount().

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Acked-by: default avatarIan Kent <raven@themaw.net>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 01c64fea
Loading
Loading
Loading
Loading
+3 −14
Original line number Diff line number Diff line
@@ -1341,17 +1341,6 @@ static int do_lookup(struct nameidata *nd, struct qstr *name,
	return PTR_ERR(dentry);
}

/*
 * This is a temporary kludge to deal with "automount" symlinks; proper
 * solution is to trigger them on follow_mount(), so that do_lookup()
 * would DTRT.  To be killed before 2.6.34-final.
 */
static inline int follow_on_final(struct inode *inode, unsigned lookup_flags)
{
	return inode && unlikely(inode->i_op->follow_link) &&
		((lookup_flags & LOOKUP_FOLLOW) || S_ISDIR(inode->i_mode));
}

/*
 * Name resolution.
 * This is the basic name resolution function, turning a pathname into
@@ -1490,7 +1479,8 @@ static int link_path_walk(const char *name, struct nameidata *nd)
		err = do_lookup(nd, &this, &next, &inode);
		if (err)
			break;
		if (follow_on_final(inode, lookup_flags)) {
		if (inode && unlikely(inode->i_op->follow_link) &&
		    (lookup_flags & LOOKUP_FOLLOW)) {
			if (nameidata_dentry_drop_rcu_maybe(nd, next.dentry))
				return -ECHILD;
			BUG_ON(inode != next.dentry->d_inode);
@@ -2543,8 +2533,7 @@ struct file *do_filp_open(int dfd, const char *pathname,
		struct inode *linki = link.dentry->d_inode;
		void *cookie;
		error = -ELOOP;
		/* S_ISDIR part is a temporary automount kludge */
		if (!(nd.flags & LOOKUP_FOLLOW) && !S_ISDIR(linki->i_mode))
		if (!(nd.flags & LOOKUP_FOLLOW))
			goto exit_dput;
		if (count++ == 32)
			goto exit_dput;