lkml.org 
[lkml]   [2018]   [Jan]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/7] pipe, sysctl: remove pipe_proc_fn()
    Date
    From: Eric Biggers <ebiggers@google.com>

    pipe_proc_fn() is no longer needed, as it only calls through to
    proc_dopipe_max_size(). Just put proc_dopipe_max_size() in the
    ctl_table entry directly, and remove the unneeded EXPORT_SYMBOL() and
    the ENOSYS stub for it.

    (The reason the ENOSYS stub isn't needed is that the pipe-max-size
    ctl_table entry is located directly in 'kern_table' rather than being
    registered separately. Therefore, the entry is already only defined
    when the kernel is built with sysctl support.)

    Signed-off-by: Eric Biggers <ebiggers@google.com>
    ---
    fs/pipe.c | 10 ----------
    include/linux/pipe_fs_i.h | 1 -
    include/linux/sysctl.h | 3 ---
    kernel/sysctl.c | 15 +++++----------
    4 files changed, 5 insertions(+), 24 deletions(-)

    diff --git a/fs/pipe.c b/fs/pipe.c
    index a75f5d2ca99c..d0dec5e7ef33 100644
    --- a/fs/pipe.c
    +++ b/fs/pipe.c
    @@ -1120,16 +1120,6 @@ static long pipe_set_size(struct pipe_inode_info *pipe, unsigned long arg)
    return ret;
    }

    -/*
    - * This should work even if CONFIG_PROC_FS isn't set, as proc_dopipe_max_size
    - * will return an error.
    - */
    -int pipe_proc_fn(struct ctl_table *table, int write, void __user *buf,
    - size_t *lenp, loff_t *ppos)
    -{
    - return proc_dopipe_max_size(table, write, buf, lenp, ppos);
    -}
    -
    /*
    * After the inode slimming patch, i_pipe/i_bdev/i_cdev share the same
    * location, so checking ->i_pipe is not enough to verify that this is a
    diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
    index 7d9beda14584..5028bd4b2c96 100644
    --- a/include/linux/pipe_fs_i.h
    +++ b/include/linux/pipe_fs_i.h
    @@ -170,7 +170,6 @@ void pipe_double_lock(struct pipe_inode_info *, struct pipe_inode_info *);
    extern unsigned int pipe_max_size;
    extern unsigned long pipe_user_pages_hard;
    extern unsigned long pipe_user_pages_soft;
    -int pipe_proc_fn(struct ctl_table *, int, void __user *, size_t *, loff_t *);

    /* Drop the inode semaphore and wait for a pipe event, atomically */
    void pipe_wait(struct pipe_inode_info *pipe);
    diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
    index 992bc9948232..b769ecfcc3bd 100644
    --- a/include/linux/sysctl.h
    +++ b/include/linux/sysctl.h
    @@ -51,9 +51,6 @@ extern int proc_dointvec_minmax(struct ctl_table *, int,
    extern int proc_douintvec_minmax(struct ctl_table *table, int write,
    void __user *buffer, size_t *lenp,
    loff_t *ppos);
    -extern int proc_dopipe_max_size(struct ctl_table *table, int write,
    - void __user *buffer, size_t *lenp,
    - loff_t *ppos);
    extern int proc_dointvec_jiffies(struct ctl_table *, int,
    void __user *, size_t *, loff_t *);
    extern int proc_dointvec_userhz_jiffies(struct ctl_table *, int,
    diff --git a/kernel/sysctl.c b/kernel/sysctl.c
    index a71ebb5c5182..33e2f0f02000 100644
    --- a/kernel/sysctl.c
    +++ b/kernel/sysctl.c
    @@ -218,6 +218,8 @@ static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
    static int proc_dostring_coredump(struct ctl_table *table, int write,
    void __user *buffer, size_t *lenp, loff_t *ppos);
    #endif
    +static int proc_dopipe_max_size(struct ctl_table *table, int write,
    + void __user *buffer, size_t *lenp, loff_t *ppos);

    #ifdef CONFIG_MAGIC_SYSRQ
    /* Note: sysrq code uses it's own private copy */
    @@ -1819,7 +1821,7 @@ static struct ctl_table fs_table[] = {
    .data = &pipe_max_size,
    .maxlen = sizeof(pipe_max_size),
    .mode = 0644,
    - .proc_handler = &pipe_proc_fn,
    + .proc_handler = proc_dopipe_max_size,
    },
    {
    .procname = "pipe-user-pages-hard",
    @@ -2644,8 +2646,8 @@ static int do_proc_dopipe_max_size_conv(unsigned long *lvalp,
    return 0;
    }

    -int proc_dopipe_max_size(struct ctl_table *table, int write,
    - void __user *buffer, size_t *lenp, loff_t *ppos)
    +static int proc_dopipe_max_size(struct ctl_table *table, int write,
    + void __user *buffer, size_t *lenp, loff_t *ppos)
    {
    return do_proc_douintvec(table, write, buffer, lenp, ppos,
    do_proc_dopipe_max_size_conv, NULL);
    @@ -3154,12 +3156,6 @@ int proc_douintvec_minmax(struct ctl_table *table, int write,
    return -ENOSYS;
    }

    -int proc_dopipe_max_size(struct ctl_table *table, int write,
    - void __user *buffer, size_t *lenp, loff_t *ppos)
    -{
    - return -ENOSYS;
    -}
    -
    int proc_dointvec_jiffies(struct ctl_table *table, int write,
    void __user *buffer, size_t *lenp, loff_t *ppos)
    {
    @@ -3203,7 +3199,6 @@ EXPORT_SYMBOL(proc_douintvec);
    EXPORT_SYMBOL(proc_dointvec_jiffies);
    EXPORT_SYMBOL(proc_dointvec_minmax);
    EXPORT_SYMBOL_GPL(proc_douintvec_minmax);
    -EXPORT_SYMBOL_GPL(proc_dopipe_max_size);
    EXPORT_SYMBOL(proc_dointvec_userhz_jiffies);
    EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
    EXPORT_SYMBOL(proc_dostring);
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-01-14 23:16    [W:3.089 / U:0.256 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site