Messages in this thread Patch in this message | | | From | Xiaoming Ni <> | Subject | [PATCH v3 1/4] sysctl: Add register_sysctl_init() interface | Date | Mon, 18 May 2020 11:59:54 +0800 |
| |
In order to eliminate the duplicate code for registering the sysctl interface during the initialization of each feature, add the register_sysctl_init() interface
Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com> Reviewed-by: Kees Cook <keescook@chromium.org> --- include/linux/sysctl.h | 2 ++ kernel/sysctl.c | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+)
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 02fa844..43f8ef9 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -206,6 +206,8 @@ struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path, void unregister_sysctl_table(struct ctl_table_header * table); extern int sysctl_init(void); +extern void register_sysctl_init(const char *path, struct ctl_table *table, + const char *table_name); extern struct ctl_table sysctl_mount_point[]; diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 8a176d8..c96122f 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -1968,6 +1968,25 @@ int __init sysctl_init(void) return 0; } +/* + * The sysctl interface is used to modify the interface value, + * but the feature interface has default values. Even if register_sysctl fails, + * the feature body function can also run. At the same time, malloc small + * fragment of memory during the system initialization phase, almost does + * not fail. Therefore, the function return is designed as void + */ +void __init register_sysctl_init(const char *path, struct ctl_table *table, + const char *table_name) +{ + struct ctl_table_header *hdr = register_sysctl(path, table); + + if (unlikely(!hdr)) { + pr_err("failed when register_sysctl %s to %s\n", table_name, path); + return; + } + kmemleak_not_leak(hdr); +} + #endif /* CONFIG_SYSCTL */ /* -- 1.8.5.6
| |