Message ID | 3ce097c15e3f7ace98fc7fd9bcbf299f092e63d1.1710504184.git.fmaurer@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 3cf28cd492308e5f63ed00b29ea03ca016264376 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,v2] hsr: Handle failures in module init | expand |
On Fri, 15 Mar 2024 13:04:52 +0100, Felix Maurer wrote: > A failure during registration of the netdev notifier was not handled at > all. A failure during netlink initialization did not unregister the netdev > notifier. > > Handle failures of netdev notifier registration and netlink initialization. > Both functions should only return negative values on failure and thereby > lead to the hsr module not being loaded. > > Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)") > Signed-off-by: Felix Maurer <fmaurer@redhat.com> The patch LGTM. Module initialization errors are handled correctly. Netdev notifier is correctly unregistered when netlink initialization fails. Reviewed-by: Shigeru Yoshida <syoshida@redhat.com> > --- > net/hsr/hsr_main.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/net/hsr/hsr_main.c b/net/hsr/hsr_main.c > index cb83c8feb746..9756e657bab9 100644 > --- a/net/hsr/hsr_main.c > +++ b/net/hsr/hsr_main.c > @@ -148,14 +148,21 @@ static struct notifier_block hsr_nb = { > > static int __init hsr_init(void) > { > - int res; > + int err; > > BUILD_BUG_ON(sizeof(struct hsr_tag) != HSR_HLEN); > > - register_netdevice_notifier(&hsr_nb); > - res = hsr_netlink_init(); > + err = register_netdevice_notifier(&hsr_nb); > + if (err) > + return err; > + > + err = hsr_netlink_init(); > + if (err) { > + unregister_netdevice_notifier(&hsr_nb); > + return err; > + } > > - return res; > + return 0; > } > > static void __exit hsr_exit(void) > -- > 2.44.0 > >
On Fri, Mar 15, 2024 at 01:04:52PM +0100, Felix Maurer wrote: > A failure during registration of the netdev notifier was not handled at > all. A failure during netlink initialization did not unregister the netdev > notifier. > > Handle failures of netdev notifier registration and netlink initialization. > Both functions should only return negative values on failure and thereby > lead to the hsr module not being loaded. > > Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)") > Signed-off-by: Felix Maurer <fmaurer@redhat.com> Reviewed-by: Breno Leitao <leitao@debian.org>
Hello: This patch was applied to netdev/net.git (main) by Paolo Abeni <pabeni@redhat.com>: On Fri, 15 Mar 2024 13:04:52 +0100 you wrote: > A failure during registration of the netdev notifier was not handled at > all. A failure during netlink initialization did not unregister the netdev > notifier. > > Handle failures of netdev notifier registration and netlink initialization. > Both functions should only return negative values on failure and thereby > lead to the hsr module not being loaded. > > [...] Here is the summary with links: - [net,v2] hsr: Handle failures in module init https://git.kernel.org/netdev/net/c/3cf28cd49230 You are awesome, thank you!
diff --git a/net/hsr/hsr_main.c b/net/hsr/hsr_main.c index cb83c8feb746..9756e657bab9 100644 --- a/net/hsr/hsr_main.c +++ b/net/hsr/hsr_main.c @@ -148,14 +148,21 @@ static struct notifier_block hsr_nb = { static int __init hsr_init(void) { - int res; + int err; BUILD_BUG_ON(sizeof(struct hsr_tag) != HSR_HLEN); - register_netdevice_notifier(&hsr_nb); - res = hsr_netlink_init(); + err = register_netdevice_notifier(&hsr_nb); + if (err) + return err; + + err = hsr_netlink_init(); + if (err) { + unregister_netdevice_notifier(&hsr_nb); + return err; + } - return res; + return 0; } static void __exit hsr_exit(void)
A failure during registration of the netdev notifier was not handled at all. A failure during netlink initialization did not unregister the netdev notifier. Handle failures of netdev notifier registration and netlink initialization. Both functions should only return negative values on failure and thereby lead to the hsr module not being loaded. Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)") Signed-off-by: Felix Maurer <fmaurer@redhat.com> --- net/hsr/hsr_main.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)