Re: [PATCH v1] ipv6: route: Unregister netdevice notifier on BPF init failure

From: Jakub Kicinski

Date: Thu May 14 2026 - 21:44:54 EST


On Wed, 13 May 2026 20:22:18 -0400 Yuho Choi wrote:
> ip6_route_init() registers ip6_route_dev_notifier before registering the
> IPv6 route BPF iterator target. If bpf_iter_register() fails, the error
> path jumps to out_register_late_subsys and unwinds the RTNL handlers and
> late pernet subsystem, but leaves the netdevice notifier registered.
>
> Add a separate unwind label for the BPF iterator failure path so the
> netdevice notifier is unregistered before continuing with the existing
> cleanup.
>
> Fixes: 138d0be35b14 ("net: bpf: Add netlink and ipv6_route bpf_iter targets")
> Signed-off-by: Yuho Choi <dbgh9129@xxxxxxxxx>

> diff --git a/net/ipv6/route.c b/net/ipv6/route.c
> index cb521700cee7..4333e11dc9c5 100644
> --- a/net/ipv6/route.c
> +++ b/net/ipv6/route.c
> @@ -6925,7 +6925,7 @@ int __init ip6_route_init(void)
> #if defined(CONFIG_BPF_SYSCALL) && defined(CONFIG_PROC_FS)
> ret = bpf_iter_register();
> if (ret)
> - goto out_register_late_subsys;
> + goto out_register_notifier;
> #endif
> #endif
>
> @@ -6939,6 +6939,12 @@ int __init ip6_route_init(void)
> out:
> return ret;
>
> +#if IS_BUILTIN(CONFIG_IPV6)

Why this check?

> +#if defined(CONFIG_BPF_SYSCALL) && defined(CONFIG_PROC_FS)
> +out_register_notifier:
> + unregister_netdevice_notifier(&ip6_route_dev_notifier);
> +#endif
> +#endif
--
pw-bot: cr