[IPV6]: make extended headers to return an error at initialization
This patch factorize the code for the differents init functions for rthdr,
nodata, destopt in a single function exthdrs_init.
This function returns an error so the af_inet6 module can check correctly
the initialization.
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 614f3d9..442c298 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -859,10 +859,11 @@
goto addrconf_fail;
/* Init v6 extension headers. */
- ipv6_rthdr_init();
+ err = ipv6_exthdrs_init();
+ if (err)
+ goto ipv6_exthdrs_fail;
+
ipv6_frag_init();
- ipv6_nodata_init();
- ipv6_destopt_init();
/* Init v6 transport protocols. */
udpv6_init();
@@ -874,6 +875,8 @@
out:
return err;
+ipv6_exthdrs_fail:
+ addrconf_cleanup();
addrconf_fail:
ip6_flowlabel_cleanup();
ip6_flowlabel_fail:
@@ -932,6 +935,7 @@
/* Cleanup code parts. */
ipv6_packet_cleanup();
+ ipv6_exthdrs_exit();
addrconf_cleanup();
ip6_flowlabel_cleanup();
ip6_route_cleanup();