mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
sysctl: Register the base sysctl table like any other sysctl table.
Simplify the code by treating the base sysctl table like any other sysctl table and register it with register_sysctl_table. To ensure this table is registered early enough to avoid problems call sysctl_init from proc_sys_init. Rename sysctl_net.c:sysctl_init() to net_sysctl_init() to avoid name conflicts now that kernel/sysctl.c:sysctl_init() is no longer static. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
@@ -468,5 +468,6 @@ int __init proc_sys_init(void)
|
|||||||
proc_sys_root->proc_iops = &proc_sys_dir_operations;
|
proc_sys_root->proc_iops = &proc_sys_dir_operations;
|
||||||
proc_sys_root->proc_fops = &proc_sys_dir_file_operations;
|
proc_sys_root->proc_fops = &proc_sys_dir_file_operations;
|
||||||
proc_sys_root->nlink = 0;
|
proc_sys_root->nlink = 0;
|
||||||
return 0;
|
|
||||||
|
return sysctl_init();
|
||||||
}
|
}
|
||||||
|
@@ -1095,6 +1095,7 @@ struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path,
|
|||||||
void unregister_sysctl_table(struct ctl_table_header * table);
|
void unregister_sysctl_table(struct ctl_table_header * table);
|
||||||
int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table);
|
int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table);
|
||||||
|
|
||||||
|
extern int sysctl_init(void);
|
||||||
#else /* CONFIG_SYSCTL */
|
#else /* CONFIG_SYSCTL */
|
||||||
static inline struct ctl_table_header *register_sysctl_table(struct ctl_table * table)
|
static inline struct ctl_table_header *register_sysctl_table(struct ctl_table * table)
|
||||||
{
|
{
|
||||||
|
@@ -192,7 +192,7 @@ static int sysrq_sysctl_handler(ctl_table *table, int write,
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct ctl_table root_table[];
|
static struct ctl_table root_table[1];
|
||||||
static struct ctl_table_root sysctl_table_root;
|
static struct ctl_table_root sysctl_table_root;
|
||||||
static struct ctl_table_header root_table_header = {
|
static struct ctl_table_header root_table_header = {
|
||||||
{{.count = 1,
|
{{.count = 1,
|
||||||
@@ -222,7 +222,7 @@ int sysctl_legacy_va_layout;
|
|||||||
|
|
||||||
/* The default sysctl tables: */
|
/* The default sysctl tables: */
|
||||||
|
|
||||||
static struct ctl_table root_table[] = {
|
static struct ctl_table sysctl_base_table[] = {
|
||||||
{
|
{
|
||||||
.procname = "kernel",
|
.procname = "kernel",
|
||||||
.mode = 0555,
|
.mode = 0555,
|
||||||
@@ -1747,17 +1747,12 @@ static void sysctl_set_parent(struct ctl_table *parent, struct ctl_table *table)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static __init int sysctl_init(void)
|
int __init sysctl_init(void)
|
||||||
{
|
{
|
||||||
sysctl_set_parent(NULL, root_table);
|
register_sysctl_table(sysctl_base_table);
|
||||||
#ifdef CONFIG_SYSCTL_SYSCALL_CHECK
|
|
||||||
sysctl_check_table(current->nsproxy, root_table);
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
core_initcall(sysctl_init);
|
|
||||||
|
|
||||||
static struct ctl_table *is_branch_in(struct ctl_table *branch,
|
static struct ctl_table *is_branch_in(struct ctl_table *branch,
|
||||||
struct ctl_table *table)
|
struct ctl_table *table)
|
||||||
{
|
{
|
||||||
|
@@ -90,7 +90,7 @@ static struct pernet_operations sysctl_pernet_ops = {
|
|||||||
.exit = sysctl_net_exit,
|
.exit = sysctl_net_exit,
|
||||||
};
|
};
|
||||||
|
|
||||||
static __init int sysctl_init(void)
|
static __init int net_sysctl_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
ret = register_pernet_subsys(&sysctl_pernet_ops);
|
ret = register_pernet_subsys(&sysctl_pernet_ops);
|
||||||
@@ -102,7 +102,7 @@ static __init int sysctl_init(void)
|
|||||||
out:
|
out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
subsys_initcall(sysctl_init);
|
subsys_initcall(net_sysctl_init);
|
||||||
|
|
||||||
struct ctl_table_header *register_net_sysctl_table(struct net *net,
|
struct ctl_table_header *register_net_sysctl_table(struct net *net,
|
||||||
const struct ctl_path *path, struct ctl_table *table)
|
const struct ctl_path *path, struct ctl_table *table)
|
||||||
|
Reference in New Issue
Block a user