lkml.org 
[lkml]   [2019]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/5] devtmpfs: use do_mount() instead of ksys_mount()
    Date
    In devtmpfs, do_mount() can be called directly instead of complex wrapping
    by ksys_mount():
    - the first and third arguments are const strings in the kernel,
    and do not need to be copied over from userspace;
    - the fifth argument is NULL, and therefore no page needs to be
    copied over from userspace;
    - the second and fourth argument are passed through anyway.

    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    ---
    drivers/base/devtmpfs.c | 6 +++---
    include/linux/device.h | 4 ++--
    init/do_mounts.c | 2 +-
    3 files changed, 6 insertions(+), 6 deletions(-)

    diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
    index 30d0523014e0..6cdbf1531238 100644
    --- a/drivers/base/devtmpfs.c
    +++ b/drivers/base/devtmpfs.c
    @@ -359,7 +359,7 @@ static int handle_remove(const char *nodename, struct device *dev)
    * If configured, or requested by the commandline, devtmpfs will be
    * auto-mounted after the kernel mounted the root filesystem.
    */
    -int devtmpfs_mount(const char *mntdir)
    +int devtmpfs_mount(void)
    {
    int err;

    @@ -369,7 +369,7 @@ int devtmpfs_mount(const char *mntdir)
    if (!thread)
    return 0;

    - err = ksys_mount("devtmpfs", mntdir, "devtmpfs", MS_SILENT, NULL);
    + err = do_mount("devtmpfs", "dev", "devtmpfs", MS_SILENT, NULL);
    if (err)
    printk(KERN_INFO "devtmpfs: error mounting %i\n", err);
    else
    @@ -394,7 +394,7 @@ static int devtmpfsd(void *p)
    *err = ksys_unshare(CLONE_NEWNS);
    if (*err)
    goto out;
    - *err = ksys_mount("devtmpfs", "/", "devtmpfs", MS_SILENT, NULL);
    + *err = do_mount("devtmpfs", "/", "devtmpfs", MS_SILENT, NULL);
    if (*err)
    goto out;
    ksys_chdir("/.."); /* will traverse into overmounted root */
    diff --git a/include/linux/device.h b/include/linux/device.h
    index e226030c1df3..96ff76731e93 100644
    --- a/include/linux/device.h
    +++ b/include/linux/device.h
    @@ -1666,11 +1666,11 @@ extern bool kill_device(struct device *dev);
    #ifdef CONFIG_DEVTMPFS
    extern int devtmpfs_create_node(struct device *dev);
    extern int devtmpfs_delete_node(struct device *dev);
    -extern int devtmpfs_mount(const char *mntdir);
    +extern int devtmpfs_mount(void);
    #else
    static inline int devtmpfs_create_node(struct device *dev) { return 0; }
    static inline int devtmpfs_delete_node(struct device *dev) { return 0; }
    -static inline int devtmpfs_mount(const char *mountpoint) { return 0; }
    +static inline int devtmpfs_mount(void) { return 0; }
    #endif

    /* drivers/base/power/shutdown.c */
    diff --git a/init/do_mounts.c b/init/do_mounts.c
    index af9cda887a23..43f6d098c880 100644
    --- a/init/do_mounts.c
    +++ b/init/do_mounts.c
    @@ -670,7 +670,7 @@ void __init prepare_namespace(void)

    mount_root();
    out:
    - devtmpfs_mount("dev");
    + devtmpfs_mount();
    ksys_mount(".", "/", NULL, MS_MOVE, NULL);
    ksys_chroot(".");
    }
    --
    2.24.1
    \
     
     \ /
      Last update: 2019-12-12 19:15    [W:4.789 / U:0.112 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site