]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: sparx5: unregister blocking notifier on init failure
authorHaoxiang Li <haoxiang_li2024@163.com>
Tue, 23 Jun 2026 11:57:14 +0000 (19:57 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 25 Jun 2026 15:54:04 +0000 (08:54 -0700)
sparx5_register_notifier_blocks() registers the switchdev blocking
notifier before allocating the ordered workqueue. If the workqueue
allocation fails, the error path unregisters the switchdev and netdevice
notifiers, but leaves the blocking notifier registered.

Add a separate error label for the workqueue allocation failure path and
unregister the switchdev blocking notifier there.

Fixes: d6fce5141929 ("net: sparx5: add switching support")
Cc: stable@vger.kernel.org
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260623115714.2192074-1-haoxiang_li2024@163.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/microchip/sparx5/sparx5_switchdev.c

index 644458108dd204f4c4600b0c64c5a0aa55f250c8..dac4dd833127a3971f574d48438ed1d79d0f9e2c 100644 (file)
@@ -765,11 +765,13 @@ int sparx5_register_notifier_blocks(struct sparx5 *s5)
        sparx5_owq = alloc_ordered_workqueue("sparx5_order", 0);
        if (!sparx5_owq) {
                err = -ENOMEM;
-               goto err_switchdev_blocking_nb;
+               goto err_alloc_workqueue;
        }
 
        return 0;
 
+err_alloc_workqueue:
+       unregister_switchdev_blocking_notifier(&s5->switchdev_blocking_nb);
 err_switchdev_blocking_nb:
        unregister_switchdev_notifier(&s5->switchdev_nb);
 err_switchdev_nb: