aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Maurer <[email protected]>2024-03-15 13:04:52 +0100
committerPaolo Abeni <[email protected]>2024-03-19 13:38:17 +0100
commit3cf28cd492308e5f63ed00b29ea03ca016264376 (patch)
treed15b9eb15f0ed1f1919d64f13f8771152a3a844c
parent1422f28826d2a0c11e5240b3e951c9e214d8656e (diff)
hsr: Handle failures in module init
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 <[email protected]> Reviewed-by: Shigeru Yoshida <[email protected]> Reviewed-by: Breno Leitao <[email protected]> Link: https://lore.kernel.org/r/3ce097c15e3f7ace98fc7fd9bcbf299f092e63d1.1710504184.git.fmaurer@redhat.com Signed-off-by: Paolo Abeni <[email protected]>
-rw-r--r--net/hsr/hsr_main.c15
1 files 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)