diff options
| author | Daniel Lezcano <dlezcano@fr.ibm.com> | 2008-01-10 05:47:55 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:01:14 -0500 |
| commit | 291480c09a9452a3d8852a9bfeb5ba2cbcfe662c (patch) | |
| tree | 63c12518256759295e529d13787939b8ae17438b | |
| parent | 50dd79653e295ce40da38c03bbfb5966aa1c1598 (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.h | 2 | ||||
| -rw-r--r-- | net/ipv6/af_inet6.c | 5 | ||||
| -rw-r--r-- | net/ipv6/sysctl_net_ipv6.c | 9 |
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) | |||
| 622 | extern ctl_table ipv6_route_table[]; | 622 | extern ctl_table ipv6_route_table[]; |
| 623 | extern ctl_table ipv6_icmp_table[]; | 623 | extern ctl_table ipv6_icmp_table[]; |
| 624 | 624 | ||
| 625 | extern void ipv6_sysctl_register(void); | 625 | extern int ipv6_sysctl_register(void); |
| 626 | extern void ipv6_sysctl_unregister(void); | 626 | extern 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: | |||
| 897 | icmp_fail: | 899 | icmp_fail: |
| 898 | #ifdef CONFIG_SYSCTL | 900 | #ifdef CONFIG_SYSCTL |
| 899 | ipv6_sysctl_unregister(); | 901 | ipv6_sysctl_unregister(); |
| 902 | sysctl_fail: | ||
| 900 | #endif | 903 | #endif |
| 901 | cleanup_ipv6_mibs(); | 904 | cleanup_ipv6_mibs(); |
| 902 | out_unregister_sock: | 905 | out_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 | ||
| 92 | static struct ctl_table_header *ipv6_sysctl_header; | 92 | static struct ctl_table_header *ipv6_sysctl_header; |
| 93 | 93 | ||
| 94 | void ipv6_sysctl_register(void) | 94 | int 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 | ||
| 100 | void ipv6_sysctl_unregister(void) | 105 | void ipv6_sysctl_unregister(void) |
