lkml.org 
[lkml]   [2015]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 100/110] new helper: free_page_put_link()
    Date
    From: Al Viro <viro@zeniv.linux.org.uk>

    similar to kfree_put_link()

    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    ---
    fs/configfs/symlink.c | 7 +------
    fs/fuse/dir.c | 7 +------
    fs/kernfs/symlink.c | 7 +------
    fs/libfs.c | 6 ++++++
    include/linux/fs.h | 1 +
    5 files changed, 10 insertions(+), 18 deletions(-)

    diff --git a/fs/configfs/symlink.c b/fs/configfs/symlink.c
    index bc464c2..ec5c832 100644
    --- a/fs/configfs/symlink.c
    +++ b/fs/configfs/symlink.c
    @@ -296,15 +296,10 @@ static const char *configfs_follow_link(struct dentry *dentry, void **cookie)
    return ERR_PTR(error);
    }

    -static void configfs_put_link(struct inode *unused, void *cookie)
    -{
    - free_page((unsigned long)cookie);
    -}
    -
    const struct inode_operations configfs_symlink_inode_operations = {
    .follow_link = configfs_follow_link,
    .readlink = generic_readlink,
    - .put_link = configfs_put_link,
    + .put_link = free_page_put_link,
    .setattr = configfs_setattr,
    };

    diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
    index 9e704c1..5e2e087 100644
    --- a/fs/fuse/dir.c
    +++ b/fs/fuse/dir.c
    @@ -1395,11 +1395,6 @@ static const char *fuse_follow_link(struct dentry *dentry, void **cookie)
    return link;
    }

    -static void fuse_put_link(struct inode *unused, void *cookie)
    -{
    - free_page((unsigned long) cookie);
    -}
    -
    static int fuse_dir_open(struct inode *inode, struct file *file)
    {
    return fuse_open_common(inode, file, true);
    @@ -1915,7 +1910,7 @@ static const struct inode_operations fuse_common_inode_operations = {
    static const struct inode_operations fuse_symlink_inode_operations = {
    .setattr = fuse_setattr,
    .follow_link = fuse_follow_link,
    - .put_link = fuse_put_link,
    + .put_link = free_page_put_link,
    .readlink = generic_readlink,
    .getattr = fuse_getattr,
    .setxattr = fuse_setxattr,
    diff --git a/fs/kernfs/symlink.c b/fs/kernfs/symlink.c
    index f6aa2e5..db27252 100644
    --- a/fs/kernfs/symlink.c
    +++ b/fs/kernfs/symlink.c
    @@ -126,11 +126,6 @@ static const char *kernfs_iop_follow_link(struct dentry *dentry, void **cookie)
    return *cookie = (char *)page;
    }

    -static void kernfs_iop_put_link(struct inode *unused, void *cookie)
    -{
    - free_page((unsigned long)cookie);
    -}
    -
    const struct inode_operations kernfs_symlink_iops = {
    .setxattr = kernfs_iop_setxattr,
    .removexattr = kernfs_iop_removexattr,
    @@ -138,7 +133,7 @@ const struct inode_operations kernfs_symlink_iops = {
    .listxattr = kernfs_iop_listxattr,
    .readlink = generic_readlink,
    .follow_link = kernfs_iop_follow_link,
    - .put_link = kernfs_iop_put_link,
    + .put_link = free_page_put_link,
    .setattr = kernfs_iop_setattr,
    .getattr = kernfs_iop_getattr,
    .permission = kernfs_iop_permission,
    diff --git a/fs/libfs.c b/fs/libfs.c
    index 01c337b..65e1fec 100644
    --- a/fs/libfs.c
    +++ b/fs/libfs.c
    @@ -1030,6 +1030,12 @@ void kfree_put_link(struct inode *unused, void *cookie)
    }
    EXPORT_SYMBOL(kfree_put_link);

    +void free_page_put_link(struct inode *unused, void *cookie)
    +{
    + free_page((unsigned long) cookie);
    +}
    +EXPORT_SYMBOL(free_page_put_link);
    +
    /*
    * nop .set_page_dirty method so that people can use .page_mkwrite on
    * anon inodes.
    diff --git a/include/linux/fs.h b/include/linux/fs.h
    index f21e332..8f73851 100644
    --- a/include/linux/fs.h
    +++ b/include/linux/fs.h
    @@ -2712,6 +2712,7 @@ extern int __page_symlink(struct inode *inode, const char *symname, int len,
    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 inode *, void *);
    +extern void free_page_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);
    --
    2.1.4


    \
     
     \ /
      Last update: 2015-05-11 20:41    [W:4.699 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site