[PATCH net] batman-adv: check register_netdevice_notifier() and rtnl_link_register() errors
Minhong He <[email protected]> Tue, 28 Jul 2026 11:10:50 +0800
| Newsgroups | org.open-mesh.lists.batman,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
batadv_init() ignores errors from register_netdevice_notifier() and rtnl_link_register(), so the module can load without those registrations in place. Check both return values and unwind prior initialization in reverse order of acquisition on failure. Signed-off-by: Minhong He <[email protected]> --- net/batman-adv/main.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c index 73becb054948..e6bcaf2d14ed 100644 --- a/net/batman-adv/main.c +++ b/net/batman-adv/main.c @@ -108,8 +108,14 @@ static int __init batadv_init(void) if (ret < 0) goto err_init_wifi; - register_netdevice_notifier(&batadv_hard_if_notifier); - rtnl_link_register(&batadv_link_ops); + ret = register_netdevice_notifier(&batadv_hard_if_notifier); + if (ret < 0) + goto err_reg_notifier; + + ret = rtnl_link_register(&batadv_link_ops); + if (ret < 0) + goto err_rtnl_link; + batadv_netlink_register(); pr_info("B.A.T.M.A.N. advanced %s (compatibility version %i) loaded\n", @@ -117,6 +123,10 @@ static int __init batadv_init(void) return 0; +err_rtnl_link: + unregister_netdevice_notifier(&batadv_hard_if_notifier); +err_reg_notifier: + batadv_wifi_net_devices_deinit(); err_init_wifi: destroy_workqueue(batadv_event_workqueue); batadv_event_workqueue = NULL; -- 2.25.1