aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2007-11-30 07:52:10 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:55:17 -0500
commit23eb06de7d2d333a0f7ebba2da663e00c9c9483e (patch)
tree2958ebaacc8d8fd4b1a4d1966c31e6395b5b634a
parent29e796fd4de54b8f5bc30d897611210ece4fd0f2 (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.h1
-rw-r--r--kernel/sysctl.c1
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;