]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: mana: Init link_change_work before potential error paths in probe
authorErni Sri Satya Vennela <ernis@linux.microsoft.com>
Mon, 20 Apr 2026 12:47:35 +0000 (05:47 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 23 Apr 2026 10:49:13 +0000 (12:49 +0200)
Move INIT_WORK(link_change_work) to right after the mana_context
allocation, before any error path that could reach mana_remove().

Previously, if mana_create_eq() or mana_query_device_cfg() failed,
mana_probe() would jump to the error path which calls mana_remove().
mana_remove() unconditionally calls disable_work_sync(link_change_work),
but the work struct had not been initialized yet. This can trigger
CONFIG_DEBUG_OBJECTS_WORK enabled.

Fixes: 54133f9b4b53 ("net: mana: Support HW link state events")
Signed-off-by: Erni Sri Satya Vennela <ernis@linux.microsoft.com>
Link: https://patch.msgid.link/20260420124741.1056179-2-ernis@linux.microsoft.com
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/microsoft/mana/mana_en.c

index 6302432b9bf66ccb3fd9c82faa106dbceffe187f..e3e4b6de666856e6b23a5da3f56a269561d05516 100644 (file)
@@ -3631,6 +3631,8 @@ int mana_probe(struct gdma_dev *gd, bool resuming)
 
                ac->gdma_dev = gd;
                gd->driver_data = ac;
+
+               INIT_WORK(&ac->link_change_work, mana_link_state_handle);
        }
 
        err = mana_create_eq(ac);
@@ -3648,8 +3650,6 @@ int mana_probe(struct gdma_dev *gd, bool resuming)
 
        if (!resuming) {
                ac->num_ports = num_ports;
-
-               INIT_WORK(&ac->link_change_work, mana_link_state_handle);
        } else {
                if (ac->num_ports != num_ports) {
                        dev_err(dev, "The number of vPorts changed: %d->%d\n",