From: Mickaël Salaün <mic@xxxxxxxxxxxxxxxxxxx> The proc_dointvec_minmax_sysadmin() helper is useful for the fs.trusted_for_policy sysctl brought by the next commit. This partially revert commit 642fd23fb826 ("printk: move printk sysctl to printk/sysctl.c") from Luis Chamberlain's 20211129-sysctl-cleanups branch [1], to share the proc_dointvec_minmax_sysadmin() helper. FYI, this previous commit also got the buffer pointer an __user attribute. Also remove the forgotten ten_thousand static variable (moved to kernel/printk/sysctl.c). Link: https://lkml.kernel.org/r/20211124231435.1445213-6-mcgrof@xxxxxxxxxx [1] Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Luis Chamberlain <mcgrof@xxxxxxxxxx> Cc: Xiaoming Ni <nixiaoming@xxxxxxxxxx> Signed-off-by: Mickaël Salaün <mic@xxxxxxxxxxxxxxxxxxx> Link: https://lore.kernel.org/r/20220104155024.48023-2-mic@xxxxxxxxxxx --- include/linux/sysctl.h | 2 ++ kernel/printk/sysctl.c | 9 --------- kernel/sysctl.c | 9 +++++++++ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 180adf7da785..cf1ba98aab50 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -69,6 +69,8 @@ int proc_dobool(struct ctl_table *table, int write, void *buffer, int proc_dointvec(struct ctl_table *, int, void *, size_t *, loff_t *); int proc_douintvec(struct ctl_table *, int, void *, size_t *, loff_t *); int proc_dointvec_minmax(struct ctl_table *, int, void *, size_t *, loff_t *); +int proc_dointvec_minmax_sysadmin(struct ctl_table *, int, void *, size_t *, + loff_t *); int proc_douintvec_minmax(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); int proc_dou8vec_minmax(struct ctl_table *table, int write, void *buffer, diff --git a/kernel/printk/sysctl.c b/kernel/printk/sysctl.c index 653ae04aab7f..c7129428ee9b 100644 --- a/kernel/printk/sysctl.c +++ b/kernel/printk/sysctl.c @@ -11,15 +11,6 @@ static const int ten_thousand = 10000; -static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) -{ - if (write && !capable(CAP_SYS_ADMIN)) - return -EPERM; - - return proc_dointvec_minmax(table, write, buffer, lenp, ppos); -} - static struct ctl_table printk_sysctls[] = { { .procname = "printk", diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 5ae443b2882e..2e2027e323fd 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -888,6 +888,15 @@ static int proc_taint(struct ctl_table *table, int write, return err; } +int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, loff_t *ppos) +{ + if (write && !capable(CAP_SYS_ADMIN)) + return -EPERM; + + return proc_dointvec_minmax(table, write, buffer, lenp, ppos); +} + /** * struct do_proc_dointvec_minmax_conv_param - proc_dointvec_minmax() range checking structure * @min: pointer to minimum allowable value -- 2.34.1