Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8eb55910 authored by David S. Miller's avatar David S. Miller
Browse files

[IPV6]: Fix inet6_init missing unregister.



Based mostly upon a patch from Olaf Kirch <okir@suse.de>

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: default avatarDavid S. Miller <davem@davemloft.net>
parent 85837ebd
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -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 @@ static int __init inet6_init(void)
	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: