aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2012-01-10 01:19:13 -0500
committerEric W. Biederman <ebiederm@xmission.com>2012-01-24 19:37:55 -0500
commit97324cd804b7b9fb6044e114329335db79810425 (patch)
treeffebd82bb36069d38b9063328920f39434eb5155
parenta15e20982e2fbb06e85da584a0f150784042c17d (diff)
sysctl: Implement retire_sysctl_set
This adds a small helper retire_sysctl_set to remove the intimate knowledge about the how a sysctl_set is implemented from net/sysct_net.c Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
-rw-r--r--fs/proc/proc_sysctl.c4
-rw-r--r--include/linux/sysctl.h1
-rw-r--r--net/sysctl_net.c2
3 files changed, 6 insertions, 1 deletions
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index f6aa75111b41..9d8223cd3655 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -1080,6 +1080,10 @@ void setup_sysctl_set(struct ctl_table_set *p,
1080 p->is_seen = is_seen; 1080 p->is_seen = is_seen;
1081} 1081}
1082 1082
1083void retire_sysctl_set(struct ctl_table_set *set)
1084{
1085 WARN_ON(!list_empty(&set->list));
1086}
1083 1087
1084int __init proc_sys_init(void) 1088int __init proc_sys_init(void)
1085{ 1089{
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 08cabbfddacb..475ff0e35e63 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -1072,6 +1072,7 @@ void proc_sys_poll_notify(struct ctl_table_poll *poll);
1072extern void setup_sysctl_set(struct ctl_table_set *p, 1072extern void setup_sysctl_set(struct ctl_table_set *p,
1073 struct ctl_table_set *parent, 1073 struct ctl_table_set *parent,
1074 int (*is_seen)(struct ctl_table_set *)); 1074 int (*is_seen)(struct ctl_table_set *));
1075extern void retire_sysctl_set(struct ctl_table_set *set);
1075 1076
1076void register_sysctl_root(struct ctl_table_root *root); 1077void register_sysctl_root(struct ctl_table_root *root);
1077struct ctl_table_header *__register_sysctl_paths( 1078struct ctl_table_header *__register_sysctl_paths(
diff --git a/net/sysctl_net.c b/net/sysctl_net.c
index a6bbee2bc710..ffd67a6515a3 100644
--- a/net/sysctl_net.c
+++ b/net/sysctl_net.c
@@ -82,7 +82,7 @@ static int __net_init sysctl_net_init(struct net *net)
82 82
83static void __net_exit sysctl_net_exit(struct net *net) 83static void __net_exit sysctl_net_exit(struct net *net)
84{ 84{
85 WARN_ON(!list_empty(&net->sysctls.list)); 85 retire_sysctl_set(&net->sysctls);
86} 86}
87 87
88static struct pernet_operations sysctl_pernet_ops = { 88static struct pernet_operations sysctl_pernet_ops = {