mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
net/mlx5: LAG, MPESW, Fix missing complete() on devcom error
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: b430c1b4f6 ("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>
This commit is contained in:
parent
0f0e4ae697
commit
d4b85f9a66
|
|
@ -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 @@ static void mlx5_mpesw_work(struct work_struct *work)
|
|||
mutex_unlock(&ldev->lock);
|
||||
mlx5_mpesw_sd_devcoms_unlock(ldev);
|
||||
mlx5_devcom_comp_unlock(devcom);
|
||||
complete:
|
||||
complete(&mpesww->comp);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user