switch ->put_link() from dentry to inode
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 7 May 2015 15:14:26 +0000 (11:14 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 11 May 2015 12:13:12 +0000 (08:13 -0400)
only one instance looks at that argument at all; that sole
exception wants inode rather than dentry.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
15 files changed:
Documentation/filesystems/Locking
Documentation/filesystems/vfs.txt
drivers/staging/lustre/lustre/llite/symlink.c
fs/configfs/symlink.c
fs/f2fs/namei.c
fs/fuse/dir.c
fs/hostfs/hostfs_kern.c
fs/hppfs/hppfs.c
fs/kernfs/symlink.c
fs/libfs.c
fs/namei.c
fs/overlayfs/inode.c
fs/proc/inode.c
include/linux/fs.h
mm/shmem.c

index 5b5b4f54c033529aada7cdb6c085fd0accdd0c7f..6a34a0f4d37ccf33248cfd81d2c917d45d8401bc 100644 (file)
@@ -51,7 +51,7 @@ prototypes:
                        struct inode *, struct dentry *, unsigned int);
        int (*readlink) (struct dentry *, char __user *,int);
        const char *(*follow_link) (struct dentry *, void **);
-       void (*put_link) (struct dentry *, void *);
+       void (*put_link) (struct inode *, void *);
        void (*truncate) (struct inode *);
        int (*permission) (struct inode *, int, unsigned int);
        int (*get_acl)(struct inode *, int);
index 0dec8c880be631c6812c228281459fb3c40cd44c..542d9352d0f2a9932a91db0559a5269f2a59eab3 100644 (file)
@@ -351,7 +351,7 @@ struct inode_operations {
                        struct inode *, struct dentry *, unsigned int);
        int (*readlink) (struct dentry *, char __user *,int);
        const char *(*follow_link) (struct dentry *, void **);
-       void (*put_link) (struct dentry *, void *);
+       void (*put_link) (struct inode *, void *);
        int (*permission) (struct inode *, int);
        int (*get_acl)(struct inode *, int);
        int (*setattr) (struct dentry *, struct iattr *);
index f3be3bf0f66f0921b6167cb0fe6aef4b05376c3a..69b203651905e93f77149754a5b9d6a021b6bf32 100644 (file)
@@ -141,7 +141,7 @@ static const char *ll_follow_link(struct dentry *dentry, void **cookie)
        return symname;
 }
 
-static void ll_put_link(struct dentry *dentry, void *cookie)
+static void ll_put_link(struct inode *unused, void *cookie)
 {
        ptlrpc_req_finished(cookie);
 }
index 0ace756490090ef2ea12400125d0fa6ec358954a..bc464c26e00eb1c6ee4b92ea2ee37d2938edd7cf 100644 (file)
@@ -296,7 +296,7 @@ static const char *configfs_follow_link(struct dentry *dentry, void **cookie)
        return ERR_PTR(error);
 }
 
-static void configfs_put_link(struct dentry *dentry, void *cookie)
+static void configfs_put_link(struct inode *unused, void *cookie)
 {
        free_page((unsigned long)cookie);
 }
index cd05a7c915339776f3be78eba70f238eccc8422f..71765d062914a515fc7603843cabd2b456d5a189 100644 (file)
@@ -301,7 +301,7 @@ static const char *f2fs_follow_link(struct dentry *dentry, void **cookie)
        const char *link = page_follow_link_light(dentry, cookie);
        if (!IS_ERR(link) && !*link) {
                /* this is broken symlink case */
-               page_put_link(dentry, *cookie);
+               page_put_link(NULL, *cookie);
                link = ERR_PTR(-ENOENT);
        }
        return link;
index d5cdef8b7f3a0d24a9155abf6d625c6f6a3e096a..9e704c1243922847b6ec8b631bcfd2ebcf915cb7 100644 (file)
@@ -1395,7 +1395,7 @@ static const char *fuse_follow_link(struct dentry *dentry, void **cookie)
        return link;
 }
 
-static void fuse_put_link(struct dentry *dentry, void *cookie)
+static void fuse_put_link(struct inode *unused, void *cookie)
 {
        free_page((unsigned long) cookie);
 }
index 7b6ed7a908f66551d95ede7fc069b711d26b8223..4a437ab5f2968fb9e549be92c6564dfdd191a6f3 100644 (file)
@@ -915,7 +915,7 @@ static const char *hostfs_follow_link(struct dentry *dentry, void **cookie)
        return *cookie = link;
 }
 
-static void hostfs_put_link(struct dentry *dentry, void *cookie)
+static void hostfs_put_link(struct inode *unused, void *cookie)
 {
        __putname(cookie);
 }
index 15a774eb5bbf2e35e7c85cc01c520a635b76d72d..2867837909a91ba005af78ea3ba4b5191e13c1d5 100644 (file)
@@ -649,12 +649,12 @@ static const char *hppfs_follow_link(struct dentry *dentry, void **cookie)
        return d_inode(proc_dentry)->i_op->follow_link(proc_dentry, cookie);
 }
 
-static void hppfs_put_link(struct dentry *dentry, void *cookie)
+static void hppfs_put_link(struct inode *inode, void *cookie)
 {
-       struct dentry *proc_dentry = HPPFS_I(d_inode(dentry))->proc_dentry;
+       struct inode *proc_inode = d_inode(HPPFS_I(inode)->proc_dentry);
 
-       if (d_inode(proc_dentry)->i_op->put_link)
-               d_inode(proc_dentry)->i_op->put_link(proc_dentry, cookie);
+       if (proc_inode->i_op->put_link)
+               proc_inode->i_op->put_link(proc_inode, cookie);
 }
 
 static const struct inode_operations hppfs_dir_iops = {
index 366c5a17475e5d0a1ecab138ec04e8e6fcfe861d..f6aa2e5a76b4021ad8489de7b984a108158d555b 100644 (file)
@@ -126,7 +126,7 @@ static const char *kernfs_iop_follow_link(struct dentry *dentry, void **cookie)
        return *cookie = (char *)page;
 }
 
-static void kernfs_iop_put_link(struct dentry *dentry, void *cookie)
+static void kernfs_iop_put_link(struct inode *unused, void *cookie)
 {
        free_page((unsigned long)cookie);
 }
index c5f3373e326beaca2ee6246cdb17acde1a8c1102..01c337b0fec8b235a7b93bcaa7bb191afdf1de07 100644 (file)
@@ -1024,7 +1024,7 @@ int noop_fsync(struct file *file, loff_t start, loff_t end, int datasync)
 }
 EXPORT_SYMBOL(noop_fsync);
 
-void kfree_put_link(struct dentry *dentry, void *cookie)
+void kfree_put_link(struct inode *unused, void *cookie)
 {
        kfree(cookie);
 }
index 0fa7af23cff6dbd8d6687a43d06bc13ae0766ad0..43034046a0e1221854eddc8eaf726347f77d5290 100644 (file)
@@ -749,7 +749,7 @@ static inline void put_link(struct nameidata *nd)
        struct saved *last = nd->stack + --nd->depth;
        struct inode *inode = last->inode;
        if (last->cookie && inode->i_op->put_link)
-               inode->i_op->put_link(last->link.dentry, last->cookie);
+               inode->i_op->put_link(inode, last->cookie);
        path_put(&last->link);
 }
 
@@ -4444,17 +4444,18 @@ EXPORT_SYMBOL(readlink_copy);
 int generic_readlink(struct dentry *dentry, char __user *buffer, int buflen)
 {
        void *cookie;
-       const char *link = dentry->d_inode->i_link;
+       struct inode *inode = d_inode(dentry);
+       const char *link = inode->i_link;
        int res;
 
        if (!link) {
-               link = dentry->d_inode->i_op->follow_link(dentry, &cookie);
+               link = inode->i_op->follow_link(dentry, &cookie);
                if (IS_ERR(link))
                        return PTR_ERR(link);
        }
        res = readlink_copy(buffer, buflen, link);
-       if (dentry->d_inode->i_op->put_link)
-               dentry->d_inode->i_op->put_link(dentry, cookie);
+       if (inode->i_op->put_link)
+               inode->i_op->put_link(inode, cookie);
        return res;
 }
 EXPORT_SYMBOL(generic_readlink);
@@ -4496,7 +4497,7 @@ const char *page_follow_link_light(struct dentry *dentry, void **cookie)
 }
 EXPORT_SYMBOL(page_follow_link_light);
 
-void page_put_link(struct dentry *dentry, void *cookie)
+void page_put_link(struct inode *unused, void *cookie)
 {
        struct page *page = cookie;
        kunmap(page);
index 9986833c9fcc640db0f06e88e1148c7114ec33d1..308379b2d0b2cb82b6ad505755484a19b4042fa0 100644 (file)
@@ -174,7 +174,7 @@ static const char *ovl_follow_link(struct dentry *dentry, void **cookie)
        return ret;
 }
 
-static void ovl_put_link(struct dentry *dentry, void *c)
+static void ovl_put_link(struct inode *unused, void *c)
 {
        struct inode *realinode;
        struct ovl_link_data *data = c;
@@ -183,7 +183,7 @@ static void ovl_put_link(struct dentry *dentry, void *c)
                return;
 
        realinode = data->realdentry->d_inode;
-       realinode->i_op->put_link(data->realdentry, data->cookie);
+       realinode->i_op->put_link(realinode, data->cookie);
        kfree(data);
 }
 
index eb35874fe09c40dceb23f357e02f074becbd76ce..afe232b9df6e5b6c83779712c8cd068169992a55 100644 (file)
@@ -402,7 +402,7 @@ static const char *proc_follow_link(struct dentry *dentry, void **cookie)
        return pde->data;
 }
 
-static void proc_put_link(struct dentry *dentry, void *p)
+static void proc_put_link(struct inode *unused, void *p)
 {
        unuse_pde(p);
 }
index ed7c9f2987598c07a77d8325fc66ffc0f65b9d96..f21e3328f9915346d05a835c0b1ab5f10872b71e 100644 (file)
@@ -1613,7 +1613,7 @@ struct inode_operations {
        struct posix_acl * (*get_acl)(struct inode *, int);
 
        int (*readlink) (struct dentry *, char __user *,int);
-       void (*put_link) (struct dentry *, void *);
+       void (*put_link) (struct inode *, void *);
 
        int (*create) (struct inode *,struct dentry *, umode_t, bool);
        int (*link) (struct dentry *,struct inode *,struct dentry *);
@@ -2706,12 +2706,12 @@ extern const struct file_operations generic_ro_fops;
 extern int readlink_copy(char __user *, int, const char *);
 extern int page_readlink(struct dentry *, char __user *, int);
 extern const char *page_follow_link_light(struct dentry *, void **);
-extern void page_put_link(struct dentry *, void *);
+extern void page_put_link(struct inode *, void *);
 extern int __page_symlink(struct inode *inode, const char *symname, int len,
                int nofs);
 extern int page_symlink(struct inode *inode, const char *symname, int len);
 extern const struct inode_operations page_symlink_inode_operations;
-extern void kfree_put_link(struct dentry *, void *);
+extern void kfree_put_link(struct inode *, void *);
 extern int generic_readlink(struct dentry *, char __user *, int);
 extern void generic_fillattr(struct inode *, struct kstat *);
 int vfs_getattr_nosec(struct path *path, struct kstat *stat);
index e0268226704652617a853656dfca98b592f78fe1..a59087edf7284838efd078f39a115484b4e6467e 100644 (file)
@@ -2486,7 +2486,7 @@ static const char *shmem_follow_link(struct dentry *dentry, void **cookie)
        return kmap(page);
 }
 
-static void shmem_put_link(struct dentry *dentry, void *cookie)
+static void shmem_put_link(struct inode *unused, void *cookie)
 {
        struct page *page = cookie;
        kunmap(page);