summaryrefslogtreecommitdiffstats
path: root/net/ipv6/af_inet6.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/af_inet6.c')
-rw-r--r--net/ipv6/af_inet6.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 3ce8d2f318c..6b39af1acb5 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -953,7 +953,9 @@ static int __init inet6_init(void)
if (err)
goto icmp_fail;
#ifdef CONFIG_IPV6_MROUTE
- ip6_mr_init();
+ err = ip6_mr_init();
+ if (err)
+ goto ipmr_fail;
#endif
err = ndisc_init();
if (err)
@@ -1057,6 +1059,10 @@ netfilter_fail:
igmp_fail:
ndisc_cleanup();
ndisc_fail:
+#ifdef CONFIG_IPV6_MROUTE
+ ip6_mr_cleanup();
+ipmr_fail:
+#endif
icmpv6_cleanup();
icmp_fail:
unregister_pernet_subsys(&inet6_net_ops);
@@ -1111,6 +1117,9 @@ static void __exit inet6_exit(void)
ipv6_netfilter_fini();
igmp6_cleanup();
ndisc_cleanup();
+#ifdef CONFIG_IPV6_MROUTE
+ ip6_mr_cleanup();
+#endif
icmpv6_cleanup();
rawv6_exit();