lkml.org 
[lkml]   [2020]   [Sep]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5/5] fs: remove do_mounts
    Date
    There are only two callers left, one of which is is in the alpha-specific
    OSF/1 compat code. Just open code it in both.

    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ---
    arch/alpha/kernel/osf_sys.c | 7 ++++++-
    fs/namespace.c | 25 ++++++++-----------------
    include/linux/fs.h | 2 --
    3 files changed, 14 insertions(+), 20 deletions(-)

    diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
    index 5fd155b13503b5..8acd5101097576 100644
    --- a/arch/alpha/kernel/osf_sys.c
    +++ b/arch/alpha/kernel/osf_sys.c
    @@ -434,6 +434,7 @@ SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path,
    struct osf_mount_args tmp;
    struct filename *devname;
    const char *fstype;
    + struct path path;
    int retval;

    if (copy_from_user(&tmp, args, sizeof(tmp)))
    @@ -467,7 +468,11 @@ SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path,

    if (IS_ERR(devname))
    return PTR_ERR(devname);
    - retval = do_mount(devname.name, dirname, fstype, flags, NULL);
    + retval = user_path_at(AT_FDCWD, dirname, LOOKUP_FOLLOW, &path);
    + if (!retval) {
    + ret = path_mount(devname.name, &path, fstype, flags, NULL);
    + path_put(&path);
    + }
    putname(devname);
    return retval;
    }
    diff --git a/fs/namespace.c b/fs/namespace.c
    index 12b431b61462b9..2ff373ebeaf27f 100644
    --- a/fs/namespace.c
    +++ b/fs/namespace.c
    @@ -3193,20 +3193,6 @@ int path_mount(const char *dev_name, struct path *path,
    data_page);
    }

    -long do_mount(const char *dev_name, const char __user *dir_name,
    - const char *type_page, unsigned long flags, void *data_page)
    -{
    - struct path path;
    - int ret;
    -
    - ret = user_path_at(AT_FDCWD, dir_name, LOOKUP_FOLLOW, &path);
    - if (ret)
    - return ret;
    - ret = path_mount(dev_name, &path, type_page, flags, data_page);
    - path_put(&path);
    - return ret;
    -}
    -
    static struct ucounts *inc_mnt_namespaces(struct user_namespace *ns)
    {
    return inc_ucount(ns, current_euid(), UCOUNT_MNT_NAMESPACES);
    @@ -3390,10 +3376,11 @@ EXPORT_SYMBOL(mount_subtree);
    SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,
    char __user *, type, unsigned long, flags, void __user *, data)
    {
    - int ret;
    + struct path path;
    char *kernel_type;
    char *kernel_dev;
    void *options;
    + int ret;

    kernel_type = copy_mount_string(type);
    ret = PTR_ERR(kernel_type);
    @@ -3410,8 +3397,12 @@ SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,
    if (IS_ERR(options))
    goto out_data;

    - ret = do_mount(kernel_dev, dir_name, kernel_type, flags, options);
    -
    + ret = user_path_at(AT_FDCWD, dir_name, LOOKUP_FOLLOW, &path);
    + if (ret)
    + goto out_options;
    + ret = path_mount(kernel_dev, &path, kernel_type, flags, options);
    + path_put(&path);
    +out_options:
    kfree(options);
    out_data:
    kfree(kernel_dev);
    diff --git a/include/linux/fs.h b/include/linux/fs.h
    index 7519ae003a082c..bd9878bdd4bfe9 100644
    --- a/include/linux/fs.h
    +++ b/include/linux/fs.h
    @@ -2292,8 +2292,6 @@ extern struct vfsmount *kern_mount(struct file_system_type *);
    extern void kern_unmount(struct vfsmount *mnt);
    extern int may_umount_tree(struct vfsmount *);
    extern int may_umount(struct vfsmount *);
    -extern long do_mount(const char *, const char __user *,
    - const char *, unsigned long, void *);
    extern struct vfsmount *collect_mounts(const struct path *);
    extern void drop_collected_mounts(struct vfsmount *);
    extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *,
    --
    2.28.0
    \
     
     \ /
      Last update: 2020-09-17 10:36    [W:3.861 / U:1.596 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site