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

Commit 443ed254 authored by Al Viro's avatar Al Viro
Browse files

... and fold the renamed __vfs_follow_link() into its only caller



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 4aa32895
Loading
Loading
Loading
Loading
+14 −24
Original line number Diff line number Diff line
@@ -660,29 +660,6 @@ static __always_inline void set_root_rcu(struct nameidata *nd)
	}
}

static __always_inline int __follow_link(struct nameidata *nd, const char *link)
{
	int ret;

	if (IS_ERR(link))
		goto fail;

	if (*link == '/') {
		set_root(nd);
		path_put(&nd->path);
		nd->path = nd->root;
		path_get(&nd->root);
		nd->flags |= LOOKUP_JUMPED;
	}
	nd->inode = nd->path.dentry->d_inode;

	ret = link_path_walk(link, nd);
	return ret;
fail:
	path_put(&nd->path);
	return PTR_ERR(link);
}

static void path_put_conditional(struct path *path, struct nameidata *nd)
{
	dput(path->dentry);
@@ -874,7 +851,20 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
	error = 0;
	s = nd_get_link(nd);
	if (s) {
		error = __follow_link(nd, s);
		if (unlikely(IS_ERR(s))) {
			path_put(&nd->path);
			put_link(nd, link, *p);
			return PTR_ERR(s);
		}
		if (*s == '/') {
			set_root(nd);
			path_put(&nd->path);
			nd->path = nd->root;
			path_get(&nd->root);
			nd->flags |= LOOKUP_JUMPED;
		}
		nd->inode = nd->path.dentry->d_inode;
		error = link_path_walk(s, nd);
		if (unlikely(error))
			put_link(nd, link, *p);
	}