]> git.baikalelectronics.ru Git - kernel.git/commit
net/mlx5e: TC, Fix ct_clear overwriting ct action metadata
authorAriel Levkovich <lariel@nvidia.com>
Wed, 23 Feb 2022 19:29:17 +0000 (21:29 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Wed, 4 May 2022 07:00:04 +0000 (00:00 -0700)
commit3d4740d8b4fe0c53c3b3a2d8cbb5b4b19abcf0c9
tree9cf4ef2b27a3e49d437b705be70b331c5d37794c
parent23c3637e7b0e85f27e28d48d831755762c1b25d9
net/mlx5e: TC, Fix ct_clear overwriting ct action metadata

ct_clear action is translated to clearing reg_c metadata
which holds ct state and zone information using mod header
actions.
These actions are allocated during the actions parsing, as
part of the flow attributes main mod header action list.

If ct action exists in the rule, the flow's main mod header
is used only in the post action table rule, after the ct tables
which set the ct info in the reg_c as part of the ct actions.

Therefore, if the original rule has a ct_clear action followed
by a ct action, the ct action reg_c setting will be done first and
will be followed by the ct_clear resetting reg_c and overwriting
the ct info.

Fix this by moving the ct_clear mod header actions allocation from
the ct action parsing stage to the ct action post parsing stage where
it is already known if ct_clear is followed by a ct action.
In such case, we skip the mod header actions allocation for the ct
clear since the ct action will write to reg_c anyway after clearing it.

Fixes: 12a57de0a144 ("net/mlx5e: CT, Fix multiple allocations and memleak of mod acts")
Signed-off-by: Ariel Levkovich <lariel@nvidia.com>
Reviewed-by: Paul Blakey <paulb@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Reviewed-by: Maor Dickman <maord@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/ct.c
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h