lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 2 Apr 2011 04:53:16 +0200 From: Lucian Adrian Grijincu <lucian.grijincu@...il.com> To: "'David S . Miller'" <davem@...emloft.net>, Alexey Dobriyan <adobriyan@...il.com>, "Eric W . Biederman" <ebiederm@...ssion.com>, Octavian Purdila <tavi@...pub.ro>, linux-kernel@...r.kernel.org, netdev@...r.kernel.org Cc: Lucian Adrian Grijincu <lucian.grijincu@...il.com> Subject: [PATCH 02/24] sysctl: cookie: add ctl_header_cookie Signed-off-by: Lucian Adrian Grijincu <lucian.grijincu@...il.com> --- include/linux/sysctl.h | 5 ++++- kernel/sysctl.c | 12 ++++++++---- net/sysctl_net.c | 6 +++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 11684d9..f82d456 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -1054,6 +1054,9 @@ struct ctl_table_header struct ctl_table *attached_by; struct ctl_table *attached_to; struct ctl_table_header *parent; + /* Pointer to data that outlives this ctl_table_header. + * Caller responsible to free the cookie. */ + void *ctl_header_cookie; }; /* struct ctl_path describes where in the hierarchy a table is added */ @@ -1064,7 +1067,7 @@ struct ctl_path { void register_sysctl_root(struct ctl_table_root *root); struct ctl_table_header *__register_sysctl_paths( struct ctl_table_root *root, struct nsproxy *namespaces, - const struct ctl_path *path, struct ctl_table *table); + const struct ctl_path *path, struct ctl_table *table, void *cookie); struct ctl_table_header *register_sysctl_table(struct ctl_table * table); struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path, struct ctl_table *table); diff --git a/kernel/sysctl.c b/kernel/sysctl.c index c0bb324..dd3d061 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -205,6 +205,7 @@ static struct ctl_table_header root_table_header = { .ctl_entry = LIST_HEAD_INIT(sysctl_table_root.default_set.list),}}, .root = &sysctl_table_root, .set = &sysctl_table_root.default_set, + .ctl_header_cookie = NULL, }; static struct ctl_table_root sysctl_table_root = { .root_list = LIST_HEAD_INIT(sysctl_table_root.root_list), @@ -1781,6 +1782,9 @@ static void try_attach(struct ctl_table_header *p, struct ctl_table_header *q) * @namespaces: Data to compute which lists of sysctl entries are visible * @path: The path to the directory the sysctl table is in. * @table: the top-level table structure + * @cookie: Pointer to user provided data that must be accessible + * until unregister_sysctl_table. This cookie will be passed to the + * proc_handler. * * Register a sysctl table hierarchy. @table should be a filled in ctl_table * array. A completely 0 filled entry terminates the table. @@ -1829,9 +1833,8 @@ static void try_attach(struct ctl_table_header *p, struct ctl_table_header *q) * to the table header on success. */ struct ctl_table_header *__register_sysctl_paths( - struct ctl_table_root *root, - struct nsproxy *namespaces, - const struct ctl_path *path, struct ctl_table *table) + struct ctl_table_root *root, struct nsproxy *namespaces, + const struct ctl_path *path, struct ctl_table *table, void *cookie) { struct ctl_table_header *header; struct ctl_table *new, **prevp; @@ -1878,6 +1881,7 @@ struct ctl_table_header *__register_sysctl_paths( header->root = root; sysctl_set_parent(NULL, header->ctl_table); header->count = 1; + header->ctl_header_cookie = cookie; #ifdef CONFIG_SYSCTL_SYSCALL_CHECK if (sysctl_check_table(namespaces, header->ctl_table)) { kfree(header); @@ -1918,7 +1922,7 @@ struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path, struct ctl_table *table) { return __register_sysctl_paths(&sysctl_table_root, current->nsproxy, - path, table); + path, table, NULL); } /** diff --git a/net/sysctl_net.c b/net/sysctl_net.c index ca84212..9dadd17 100644 --- a/net/sysctl_net.c +++ b/net/sysctl_net.c @@ -109,8 +109,8 @@ struct ctl_table_header *register_net_sysctl_table(struct net *net, struct nsproxy namespaces; namespaces = *current->nsproxy; namespaces.net_ns = net; - return __register_sysctl_paths(&net_sysctl_root, - &namespaces, path, table); + return __register_sysctl_paths(&net_sysctl_root, &namespaces, path, + table, NULL); } EXPORT_SYMBOL_GPL(register_net_sysctl_table); @@ -118,7 +118,7 @@ struct ctl_table_header *register_net_sysctl_rotable(const struct ctl_path *path, struct ctl_table *table) { return __register_sysctl_paths(&net_sysctl_ro_root, - &init_nsproxy, path, table); + &init_nsproxy, path, table, NULL); } EXPORT_SYMBOL_GPL(register_net_sysctl_rotable); -- 1.7.5.rc0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists