| From e1d69b9872c31cd6d179ac5e26105557273d4f32 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 15 Mar 2024 13:04:52 +0100 |
| Subject: hsr: Handle failures in module init |
| |
| From: Felix Maurer <fmaurer@redhat.com> |
| |
| [ Upstream commit 3cf28cd492308e5f63ed00b29ea03ca016264376 ] |
| |
| 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: Shigeru Yoshida <syoshida@redhat.com> |
| Reviewed-by: Breno Leitao <leitao@debian.org> |
| Link: https://lore.kernel.org/r/3ce097c15e3f7ace98fc7fd9bcbf299f092e63d1.1710504184.git.fmaurer@redhat.com |
| Signed-off-by: Paolo Abeni <pabeni@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| 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 cb83c8feb7465..9756e657bab97 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.43.0 |
| |