batman-adv: Check return value

Message ID 20221224233311.48678-1-artem.chernyshev@red-soft.ru (mailing list archive)
State Changes Requested
Delegated to: Simon Wunderlich
Headers
Series batman-adv: Check return value |

Commit Message

Artem Chernyshev Dec. 24, 2022, 11:33 p.m. UTC
  Check, if rtnl_link_register() call in batadv_init() was successful

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: a4ac28c0d06a ("batman-adv: Allow to use rntl_link for device creation/deletion")
Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru>
---
 net/batman-adv/main.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
  

Comments

Sven Eckelmann Dec. 25, 2022, 6:37 a.m. UTC | #1
Subject is missing something like ..." after calling rtnl_link_register()" or
..."s during module initialization".

On Sunday, 25 December 2022 00:33:11 CET Artem Chernyshev wrote:
[...]
> diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c
> index e8a449915566..04cd9682bd29 100644kwin
> @@ -113,7 +113,11 @@ static int __init batadv_init(void)
>  		goto err_create_wq;
>  
>  	register_netdevice_notifier(&batadv_hard_if_notifier);
> -	rtnl_link_register(&batadv_link_ops);
> +	ret = rtnl_link_register(&batadv_link_ops);
> +	if (ret) {
> +		pr_err("Can't register link_ops\n");
> +		goto err_create_wq;
> +	}
>  	batadv_netlink_register();
>  
>  	pr_info("B.A.T.M.A.N. advanced %s (compatibility version %i) loaded\n",
> 

This looks wrong to me. You missed to destroy the batadv_hard_if_notifier in 
this case.

And if you want to start adding the checks, you should also have added it for 
batadv_v_init, batadv_iv_init, batadv_nc_init, batadv_tp_meter_init and 
register_netdevice_notifier. You can use the unfinished patch from Markus 
Pargmann as starting point.

Kind regards,
	Sven

[1] https://patchwork.open-mesh.org/project/b.a.t.m.a.n./patch/1419594103-10928-6-git-send-email-mpa@pengutronix.de/
    https://lists.open-mesh.org/mailman3/hyperkitty/list/b.a.t.m.a.n@lists.open-mesh.org/thread/QDX46YARWUC4R7OBFHR5OJKWQIXDQWRR/#QDX46YARWUC4R7OBFHR5OJKWQIXDQWRR
  
Artem Chernyshev Dec. 25, 2022, 9:47 a.m. UTC | #2
Hi,
On Sun, Dec 25, 2022 at 07:37:28AM +0100, Sven Eckelmann wrote:
> Subject is missing something like ..." after calling rtnl_link_register()" or
> ..."s during module initialization".
> 
> On Sunday, 25 December 2022 00:33:11 CET Artem Chernyshev wrote:
> [...]
> > diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c
> > index e8a449915566..04cd9682bd29 100644kwin
> > @@ -113,7 +113,11 @@ static int __init batadv_init(void)
> >  		goto err_create_wq;
> >  
> >  	register_netdevice_notifier(&batadv_hard_if_notifier);
> > -	rtnl_link_register(&batadv_link_ops);
> > +	ret = rtnl_link_register(&batadv_link_ops);
> > +	if (ret) {
> > +		pr_err("Can't register link_ops\n");
> > +		goto err_create_wq;
> > +	}
> >  	batadv_netlink_register();
> >  
> >  	pr_info("B.A.T.M.A.N. advanced %s (compatibility version %i) loaded\n",
> > 
> 
> This looks wrong to me. You missed to destroy the batadv_hard_if_notifier in 
> this case.
> 
> And if you want to start adding the checks, you should also have added it for 
> batadv_v_init, batadv_iv_init, batadv_nc_init, batadv_tp_meter_init and 
> register_netdevice_notifier. You can use the unfinished patch from Markus 
> Pargmann as starting point.
> 
> Kind regards,
> 	Sven
> 
> [1] https://patchwork.open-mesh.org/project/b.a.t.m.a.n./patch/1419594103-10928-6-git-send-email-mpa@pengutronix.de/
>     https://lists.open-mesh.org/mailman3/hyperkitty/list/b.a.t.m.a.n@lists.open-mesh.org/thread/QDX46YARWUC4R7OBFHR5OJKWQIXDQWRR/#QDX46YARWUC4R7OBFHR5OJKWQIXDQWRR

Thanks for review, I'll try to fix the errors in v2

Best,
Artem
  

Patch

diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c
index e8a449915566..04cd9682bd29 100644
--- a/net/batman-adv/main.c
+++ b/net/batman-adv/main.c
@@ -113,7 +113,11 @@  static int __init batadv_init(void)
 		goto err_create_wq;
 
 	register_netdevice_notifier(&batadv_hard_if_notifier);
-	rtnl_link_register(&batadv_link_ops);
+	ret = rtnl_link_register(&batadv_link_ops);
+	if (ret) {
+		pr_err("Can't register link_ops\n");
+		goto err_create_wq;
+	}
 	batadv_netlink_register();
 
 	pr_info("B.A.T.M.A.N. advanced %s (compatibility version %i) loaded\n",