[IPV6]: Make af_inet6 to check ip6_route_init return value.
authorDaniel Lezcano <dlezcano@fr.ibm.com>
Fri, 7 Dec 2007 08:44:29 +0000 (00:44 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 22:56:47 +0000 (14:56 -0800)
The af_inet6 initialization function does not check the return code of
the route initilization, so if something goes wrong, the protocol
initialization will continue anyway.  This patch takes into account
the modification made in the different route's initialization
subroutines to check the return value and to make the protocol
initialization to fail.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Acked-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/af_inet6.c

index 64135e2a30986ac73de49252fec0b18ea89e313c..5ab8ba7a5863b2e3af83a7f5ae3bc60f067f05d2 100644 (file)
@@ -849,7 +849,9 @@ static int __init inet6_init(void)
        if (if6_proc_init())
                goto proc_if6_fail;
 #endif
-       ip6_route_init();
+       err = ip6_route_init();
+       if (err)
+               goto ip6_route_fail;
        ip6_flowlabel_init();
        err = addrconf_init();
        if (err)
@@ -874,6 +876,7 @@ out:
 addrconf_fail:
        ip6_flowlabel_cleanup();
        ip6_route_cleanup();
+ip6_route_fail:
 #ifdef CONFIG_PROC_FS
        if6_proc_exit();
 proc_if6_fail:
@@ -904,6 +907,7 @@ icmp_fail:
        cleanup_ipv6_mibs();
 out_unregister_sock:
        sock_unregister(PF_INET6);
+       rtnl_unregister_all(PF_INET6);
 out_unregister_raw_proto:
        proto_unregister(&rawv6_prot);
 out_unregister_udplite_proto: