diff --git a/include/net/af_unix.h b/include/net/af_unix.h index a1c805d7f488b7295a335c33de66f495cd5d0e37..e0fba269d092234b77f722d39cde870c06fce4ad 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -60,11 +60,11 @@ struct unix_sock { #ifdef CONFIG_SYSCTL extern int sysctl_unix_max_dgram_qlen; -extern void unix_sysctl_register(void); -extern void unix_sysctl_unregister(void); +extern int unix_sysctl_register(struct net *net); +extern void unix_sysctl_unregister(struct net *net); #else -static inline void unix_sysctl_register(void) {} -static inline void unix_sysctl_unregister(void) {} +static inline int unix_sysctl_register(struct net *net) { return 0; } +static inline void unix_sysctl_unregister(struct net *net) {} #endif #endif #endif diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 393197afb1901c3cb5866cacdb8f0e5686636faf..a0aa6d3c2c084ad713979da5dd3778a233d63a64 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -2175,7 +2175,7 @@ static int __init af_unix_init(void) sock_register(&unix_family_ops); register_pernet_subsys(&unix_net_ops); - unix_sysctl_register(); + unix_sysctl_register(&init_net); out: return rc; } @@ -2183,7 +2183,7 @@ static int __init af_unix_init(void) static void __exit af_unix_exit(void) { sock_unregister(PF_UNIX); - unix_sysctl_unregister(); + unix_sysctl_unregister(&init_net); proto_unregister(&unix_proto); unregister_pernet_subsys(&unix_net_ops); } diff --git a/net/unix/sysctl_net_unix.c b/net/unix/sysctl_net_unix.c index eb0bd57ebadac12b613e0881f9b6566aa0185cc6..b2e0407e1b7b7685386c208f3180d6a17a6724c9 100644 --- a/net/unix/sysctl_net_unix.c +++ b/net/unix/sysctl_net_unix.c @@ -48,12 +48,13 @@ static ctl_table unix_root_table[] = { static struct ctl_table_header * unix_sysctl_header; -void unix_sysctl_register(void) +int unix_sysctl_register(struct net *net) { unix_sysctl_header = register_sysctl_table(unix_root_table); + return unix_sysctl_header == NULL ? -ENOMEM : 0; } -void unix_sysctl_unregister(void) +void unix_sysctl_unregister(struct net *net) { unregister_sysctl_table(unix_sysctl_header); }