don't pass nameidata to ->follow_link()
its only use is getting passed to nd_jump_link(), which can obtain
it from current->nameidata
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/fs/namei.c b/fs/namei.c
index b57400c..f311f03 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -753,8 +753,9 @@
* Helper to directly jump to a known parsed path from ->follow_link,
* caller must have taken a reference to path beforehand.
*/
-void nd_jump_link(struct nameidata *nd, struct path *path)
+void nd_jump_link(struct path *path)
{
+ struct nameidata *nd = current->nameidata;
path_put(&nd->path);
nd->path = *path;
@@ -916,7 +917,7 @@
nd->last_type = LAST_BIND;
res = inode->i_link;
if (!res) {
- res = inode->i_op->follow_link(dentry, &last->cookie, nd);
+ res = inode->i_op->follow_link(dentry, &last->cookie);
if (IS_ERR(res)) {
out:
path_put(&last->link);
@@ -4485,12 +4486,12 @@
int res;
if (!link) {
- link = dentry->d_inode->i_op->follow_link(dentry, &cookie, NULL);
+ link = dentry->d_inode->i_op->follow_link(dentry, &cookie);
if (IS_ERR(link))
return PTR_ERR(link);
}
res = readlink_copy(buffer, buflen, link);
- if (cookie && dentry->d_inode->i_op->put_link)
+ if (dentry->d_inode->i_op->put_link)
dentry->d_inode->i_op->put_link(dentry, cookie);
return res;
}
@@ -4523,7 +4524,7 @@
}
EXPORT_SYMBOL(page_readlink);
-const char *page_follow_link_light(struct dentry *dentry, void **cookie, struct nameidata *nd)
+const char *page_follow_link_light(struct dentry *dentry, void **cookie)
{
struct page *page = NULL;
char *res = page_getlink(dentry, &page);