Luis Chamberlain
2020-May-29 07:41 UTC
[Ocfs2-devel] [PATCH 11/13] random: simplify sysctl declaration with register_sysctl_subdir()
From: Xiaoming Ni <nixiaoming at huawei.com> Move random_table sysctl from kernel/sysctl.c to drivers/char/random.c and use register_sysctl_subdir() to help remove the clutter out of kernel/sysctl.c. Signed-off-by: Xiaoming Ni <nixiaoming at huawei.com> Signed-off-by: Luis Chamberlain <mcgrof at kernel.org> --- drivers/char/random.c | 14 ++++++++++++-- include/linux/sysctl.h | 1 - kernel/sysctl.c | 5 ----- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/char/random.c b/drivers/char/random.c index a7cf6aa65908..73fd4b6e9c18 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -2101,8 +2101,7 @@ static int proc_do_entropy(struct ctl_table *table, int write, } static int sysctl_poolsize = INPUT_POOL_WORDS * 32; -extern struct ctl_table random_table[]; -struct ctl_table random_table[] = { +static struct ctl_table random_table[] = { { .procname = "poolsize", .data = &sysctl_poolsize, @@ -2164,6 +2163,17 @@ struct ctl_table random_table[] = { #endif { } }; + +/* + * rand_initialize() is called before sysctl_init(), + * so we cannot call register_sysctl_init() in rand_initialize() + */ +static int __init random_sysctls_init(void) +{ + register_sysctl_subdir("kernel", "random", random_table); + return 0; +} +device_initcall(random_sysctls_init); #endif /* CONFIG_SYSCTL */ struct batched_entropy { diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index e5364b69dd95..33a471b56345 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -216,7 +216,6 @@ extern int unaligned_dump_stack; extern int no_unaligned_warning; extern struct ctl_table sysctl_mount_point[]; -extern struct ctl_table random_table[]; #else /* CONFIG_SYSCTL */ static inline struct ctl_table_header *register_sysctl_table(struct ctl_table * table) diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 5c116904feb7..f9a35325d5d5 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -2078,11 +2078,6 @@ static struct ctl_table kern_table[] = { .mode = 0644, .proc_handler = sysctl_max_threads, }, - { - .procname = "random", - .mode = 0555, - .child = random_table, - }, { .procname = "usermodehelper", .mode = 0555, -- 2.26.2
Greg KH
2020-May-29 10:26 UTC
[Ocfs2-devel] [PATCH 11/13] random: simplify sysctl declaration with register_sysctl_subdir()
On Fri, May 29, 2020 at 07:41:06AM +0000, Luis Chamberlain wrote:> From: Xiaoming Ni <nixiaoming at huawei.com> > > Move random_table sysctl from kernel/sysctl.c to drivers/char/random.c > and use register_sysctl_subdir() to help remove the clutter out of > kernel/sysctl.c. > > Signed-off-by: Xiaoming Ni <nixiaoming at huawei.com> > Signed-off-by: Luis Chamberlain <mcgrof at kernel.org> > --- > drivers/char/random.c | 14 ++++++++++++-- > include/linux/sysctl.h | 1 - > kernel/sysctl.c | 5 ----- > 3 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/drivers/char/random.c b/drivers/char/random.c > index a7cf6aa65908..73fd4b6e9c18 100644 > --- a/drivers/char/random.c > +++ b/drivers/char/random.c > @@ -2101,8 +2101,7 @@ static int proc_do_entropy(struct ctl_table *table, int write, > } > > static int sysctl_poolsize = INPUT_POOL_WORDS * 32; > -extern struct ctl_table random_table[]; > -struct ctl_table random_table[] = { > +static struct ctl_table random_table[] = { > { > .procname = "poolsize", > .data = &sysctl_poolsize, > @@ -2164,6 +2163,17 @@ struct ctl_table random_table[] = { > #endif > { } > }; > + > +/* > + * rand_initialize() is called before sysctl_init(), > + * so we cannot call register_sysctl_init() in rand_initialize() > + */ > +static int __init random_sysctls_init(void) > +{ > + register_sysctl_subdir("kernel", "random", random_table);No error checking? :(