From: David S. Miller Date: Fri, 11 Nov 2005 23:05:47 +0000 (-0800) Subject: [IPV6]: Fix inet6_init missing unregister. X-Git-Tag: v2.6.15-rc1~1^2~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8eb55910521f3449a8125a38dd32fb676703395d;p=platform%2Fkernel%2Flinux-3.10.git [IPV6]: Fix inet6_init missing unregister. Based mostly upon a patch from Olaf Kirch When initialization fails in inet6_init(), we should unregister the PF_INET6 socket ops. Also, check sock_register()'s return value for errors. Signed-off-by: David S. Miller --- diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 4f8795a..c63b8ce 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c @@ -699,12 +699,14 @@ static int __init inet6_init(void) /* Register the family here so that the init calls below will * be able to create sockets. (?? is this dangerous ??) */ - (void) sock_register(&inet6_family_ops); + err = sock_register(&inet6_family_ops); + if (err) + goto out_unregister_raw_proto; /* Initialise ipv6 mibs */ err = init_ipv6_mibs(); if (err) - goto out_unregister_raw_proto; + goto out_unregister_sock; /* * ipngwg API draft makes clear that the correct semantics @@ -796,6 +798,8 @@ icmp_fail: ipv6_sysctl_unregister(); #endif cleanup_ipv6_mibs(); +out_unregister_sock: + sock_unregister(PF_INET6); out_unregister_raw_proto: proto_unregister(&rawv6_prot); out_unregister_udp_proto: