ipv6: sr: fix invalid unregister error path
authorHangbin Liu <liuhangbin@gmail.com>
Thu, 9 May 2024 13:18:12 +0000 (21:18 +0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 11 May 2024 02:27:46 +0000 (19:27 -0700)
The error path of seg6_init() is wrong in case CONFIG_IPV6_SEG6_LWTUNNEL
is not defined. In that case if seg6_hmac_init() fails, the
genl_unregister_family() isn't called.

This issue exist since commit 46738b1317e1 ("ipv6: sr: add option to control
lwtunnel support"), and commit 5559cea2d5aa ("ipv6: sr: fix possible
use-after-free and null-ptr-deref") replaced unregister_pernet_subsys()
with genl_unregister_family() in this error path.

Fixes: 46738b1317e1 ("ipv6: sr: add option to control lwtunnel support")
Reported-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20240509131812.1662197-4-liuhangbin@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/seg6.c

index c4ef96c8fdaca2900bc14f7dbfdfa4bd1bbfddea..a31521e270f785691140d7ecfebcc3d472f690b2 100644 (file)
@@ -551,6 +551,8 @@ out_unregister_iptun:
 #endif
 #ifdef CONFIG_IPV6_SEG6_LWTUNNEL
 out_unregister_genl:
+#endif
+#if IS_ENABLED(CONFIG_IPV6_SEG6_LWTUNNEL) || IS_ENABLED(CONFIG_IPV6_SEG6_HMAC)
        genl_unregister_family(&seg6_genl_family);
 #endif
 out_unregister_pernet: