]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net/mlx5: LAG, MPESW, Fix missing complete() on devcom error
authorShay Drory <shayd@nvidia.com>
Tue, 30 Jun 2026 11:29:16 +0000 (14:29 +0300)
committerPaolo Abeni <pabeni@redhat.com>
Fri, 3 Jul 2026 16:39:02 +0000 (18:39 +0200)
mlx5_mpesw_work() returned without calling complete() when
mlx5_lag_get_devcom_comp() returned NULL. A caller that queued the
work and waited on mpesww->comp would block indefinitely.

Funnel the early-return path through a new "complete" label so the
waiter is always woken.

Fixes: b430c1b4f63b ("net/mlx5: Replace global mlx5_intf_lock with HCA devcom component lock")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20260630112917.698313-3-tariqt@nvidia.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c

index 50bfb450c71e2f80fe5af39c1246aca44d580354..abf72026c7513305b696e5725208821ed6460e7e 100644 (file)
@@ -194,8 +194,10 @@ static void mlx5_mpesw_work(struct work_struct *work)
        struct mlx5_lag *ldev = mpesww->lag;
 
        devcom = mlx5_lag_get_devcom_comp(ldev);
-       if (!devcom)
-               return;
+       if (!devcom) {
+               mpesww->result = -ENODEV;
+               goto complete;
+       }
 
        mlx5_devcom_comp_lock(devcom);
        mlx5_mpesw_sd_devcoms_lock(ldev);
@@ -213,6 +215,7 @@ unlock:
        mutex_unlock(&ldev->lock);
        mlx5_mpesw_sd_devcoms_unlock(ldev);
        mlx5_devcom_comp_unlock(devcom);
+complete:
        complete(&mpesww->comp);
 }