diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2007-11-30 07:52:10 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:55:17 -0500 |
commit | 23eb06de7d2d333a0f7ebba2da663e00c9c9483e (patch) | |
tree | 2958ebaacc8d8fd4b1a4d1966c31e6395b5b634a | |
parent | 29e796fd4de54b8f5bc30d897611210ece4fd0f2 (diff) |
sysctl: Remember the ctl_table we passed to register_sysctl_paths
By doing this we allow users of register_sysctl_paths that build
and dynamically allocate their ctl_table to be simpler. This allows
them to just remember the ctl_table_header returned from
register_sysctl_paths from which they can now find the
ctl_table array they need to free.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Serge Hallyn <serue@us.ibm.com>
Cc: Daniel Lezcano <dlezcano@fr.ibm.com>
Cc: Cedric Le Goater <clg@fr.ibm.com>
Cc: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/linux/sysctl.h | 1 | ||||
-rw-r--r-- | kernel/sysctl.c | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 3b6e2c9fbb2e..77de3bfd8744 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h | |||
@@ -1057,6 +1057,7 @@ struct ctl_table_header | |||
1057 | struct list_head ctl_entry; | 1057 | struct list_head ctl_entry; |
1058 | int used; | 1058 | int used; |
1059 | struct completion *unregistering; | 1059 | struct completion *unregistering; |
1060 | struct ctl_table *ctl_table_arg; | ||
1060 | }; | 1061 | }; |
1061 | 1062 | ||
1062 | /* struct ctl_path describes where in the hierarchy a table is added */ | 1063 | /* struct ctl_path describes where in the hierarchy a table is added */ |
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index f580542333eb..89b7d95ecf51 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -1669,6 +1669,7 @@ struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path, | |||
1669 | new += 2; | 1669 | new += 2; |
1670 | } | 1670 | } |
1671 | *prevp = table; | 1671 | *prevp = table; |
1672 | header->ctl_table_arg = table; | ||
1672 | 1673 | ||
1673 | INIT_LIST_HEAD(&header->ctl_entry); | 1674 | INIT_LIST_HEAD(&header->ctl_entry); |
1674 | header->used = 0; | 1675 | header->used = 0; |