[NETNS][IPV6]: Make ipv6_sysctl_register to return a value.
authorDaniel Lezcano <dlezcano@fr.ibm.com>
Thu, 10 Jan 2008 10:47:55 +0000 (02:47 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 23:01:14 +0000 (15:01 -0800)
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>
include/net/ipv6.h
net/ipv6/af_inet6.c
net/ipv6/sysctl_net_ipv6.c

index e371f322017d7d0a841cfc094d929011accf1454..3e086f8bb449917b04be4d2941729457ad104521 100644 (file)
@@ -622,7 +622,7 @@ static inline int snmp6_unregister_dev(struct inet6_dev *idev)
 extern ctl_table ipv6_route_table[];
 extern ctl_table ipv6_icmp_table[];
 
-extern void ipv6_sysctl_register(void);
+extern int ipv6_sysctl_register(void);
 extern void ipv6_sysctl_unregister(void);
 #endif
 
index 34c20533ba5d972bf3d8adf7384a5a51075e0261..a2842400a09ed14a011d3152bbf8c8420a89b158 100644 (file)
@@ -783,7 +783,9 @@ static int __init inet6_init(void)
         */
 
 #ifdef CONFIG_SYSCTL
-       ipv6_sysctl_register();
+       err = ipv6_sysctl_register();
+       if (err)
+               goto sysctl_fail;
 #endif
        err = icmpv6_init(&inet6_family_ops);
        if (err)
@@ -897,6 +899,7 @@ ndisc_fail:
 icmp_fail:
 #ifdef CONFIG_SYSCTL
        ipv6_sysctl_unregister();
+sysctl_fail:
 #endif
        cleanup_ipv6_mibs();
 out_unregister_sock:
index 4ad8d9d3cb7aa88f845d487603b2fb899fcfa1f8..f713fbf34c230d93d25061ff7db3c04a5577d771 100644 (file)
@@ -91,10 +91,15 @@ EXPORT_SYMBOL_GPL(net_ipv6_ctl_path);
 
 static struct ctl_table_header *ipv6_sysctl_header;
 
-void ipv6_sysctl_register(void)
+int ipv6_sysctl_register(void)
 {
        ipv6_sysctl_header = register_sysctl_paths(net_ipv6_ctl_path,
-                       ipv6_table);
+                                                  ipv6_table);
+       if (!ipv6_sysctl_header)
+               return -ENOMEM;
+
+       return 0;
+
 }
 
 void ipv6_sysctl_unregister(void)