aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Lezcano <dlezcano@fr.ibm.com>2008-01-10 05:47:55 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:01:14 -0500
commit291480c09a9452a3d8852a9bfeb5ba2cbcfe662c (patch)
tree63c12518256759295e529d13787939b8ae17438b
parent50dd79653e295ce40da38c03bbfb5966aa1c1598 (diff)
[NETNS][IPV6]: Make ipv6_sysctl_register to return a value.
This patch makes the function ipv6_sysctl_register to return a value. The af_inet6 init function is now able to handle an error and catch it from the initialization of the sysctl. Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/ipv6.h2
-rw-r--r--net/ipv6/af_inet6.c5
-rw-r--r--net/ipv6/sysctl_net_ipv6.c9
3 files changed, 12 insertions, 4 deletions
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index e371f322017d..3e086f8bb449 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -622,7 +622,7 @@ static inline int snmp6_unregister_dev(struct inet6_dev *idev)
622extern ctl_table ipv6_route_table[]; 622extern ctl_table ipv6_route_table[];
623extern ctl_table ipv6_icmp_table[]; 623extern ctl_table ipv6_icmp_table[];
624 624
625extern void ipv6_sysctl_register(void); 625extern int ipv6_sysctl_register(void);
626extern void ipv6_sysctl_unregister(void); 626extern void ipv6_sysctl_unregister(void);
627#endif 627#endif
628 628
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 34c20533ba5d..a2842400a09e 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -783,7 +783,9 @@ static int __init inet6_init(void)
783 */ 783 */
784 784
785#ifdef CONFIG_SYSCTL 785#ifdef CONFIG_SYSCTL
786 ipv6_sysctl_register(); 786 err = ipv6_sysctl_register();
787 if (err)
788 goto sysctl_fail;
787#endif 789#endif
788 err = icmpv6_init(&inet6_family_ops); 790 err = icmpv6_init(&inet6_family_ops);
789 if (err) 791 if (err)
@@ -897,6 +899,7 @@ ndisc_fail:
897icmp_fail: 899icmp_fail:
898#ifdef CONFIG_SYSCTL 900#ifdef CONFIG_SYSCTL
899 ipv6_sysctl_unregister(); 901 ipv6_sysctl_unregister();
902sysctl_fail:
900#endif 903#endif
901 cleanup_ipv6_mibs(); 904 cleanup_ipv6_mibs();
902out_unregister_sock: 905out_unregister_sock:
diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c
index 4ad8d9d3cb7a..f713fbf34c23 100644
--- a/net/ipv6/sysctl_net_ipv6.c
+++ b/net/ipv6/sysctl_net_ipv6.c
@@ -91,10 +91,15 @@ EXPORT_SYMBOL_GPL(net_ipv6_ctl_path);
91 91
92static struct ctl_table_header *ipv6_sysctl_header; 92static struct ctl_table_header *ipv6_sysctl_header;
93 93
94void ipv6_sysctl_register(void) 94int ipv6_sysctl_register(void)
95{ 95{
96 ipv6_sysctl_header = register_sysctl_paths(net_ipv6_ctl_path, 96 ipv6_sysctl_header = register_sysctl_paths(net_ipv6_ctl_path,
97 ipv6_table); 97 ipv6_table);
98 if (!ipv6_sysctl_header)
99 return -ENOMEM;
100
101 return 0;
102
98} 103}
99 104
100void ipv6_sysctl_unregister(void) 105void ipv6_sysctl_unregister(void)