]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net/mlx5: LAG, Fix off-by-one in single-FDB error rollback
authorShay Drory <shayd@nvidia.com>
Tue, 30 Jun 2026 11:29:15 +0000 (14:29 +0300)
committerPaolo Abeni <pabeni@redhat.com>
Fri, 3 Jul 2026 16:39:02 +0000 (18:39 +0200)
On failure at index i, the reverse cleanup loop in
mlx5_lag_create_single_fdb() starts from i, so the failed index
itself is rolled back. That can operate on uninitialized state or
double-tear-down a rule the add_one path already self-rolled-back.

Start the rollback from i - 1 so only successfully-installed entries
are undone.

Fixes: ddbb5ddc43ad ("net/mlx5: LAG, Refactor lag logic")
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-2-tariqt@nvidia.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/mellanox/mlx5/core/lag/shared_fdb.c

index 113866494d164bee26b87668700ceac1cfef59e7..6b4ad3c53f2f33bd8c60dbe0344f08fc86e4b737 100644 (file)
@@ -78,7 +78,7 @@ static int mlx5_lag_create_single_fdb_filter(struct mlx5_lag *ldev, u32 filter)
        }
        return 0;
 err:
-       mlx5_lag_for_each_reverse(j, i, 0, ldev, filter) {
+       mlx5_lag_for_each_reverse(j, i - 1, 0, ldev, filter) {
                struct mlx5_eswitch *slave_esw;
 
                if (j == master_idx)