]> www.infradead.org Git - users/dwmw2/linux.git/commit
net/mlx5: Fix post parse infra to only parse every action once
authorVlad Buslov <vladbu@nvidia.com>
Mon, 22 May 2023 12:48:52 +0000 (14:48 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Thu, 25 May 2023 03:44:18 +0000 (20:44 -0700)
commit5d862ec631f3d3cc3b4f8cdb5b9fc5879663f1d3
treecce5081f3db4407e8dc955654d32c66ff004558a
parent1db1f21caebbb1b6e9b1e7657df613616be3fb49
net/mlx5: Fix post parse infra to only parse every action once

Caller of mlx5e_tc_act_post_parse() needs it to parse only the subset of
actions starting after previous split and ending at the current action.
However, that range is not provided as arguments and
mlx5e_tc_act_post_parse() uses generic flow_action_for_each() that iterates
over all flow actions. Not only this is redundant, it also causes a bug
when mlx5e_tc_act->post_parse() callback is not idempotent since it will be
called for every split. For example, ct action tc_act_post_parse_ct()
callback obtains a reference to mlx5_ct_ft instance and calling it several
times during parsing stage will cause reference counter imbalance.

Fix the issue by providing a proper action range of the current split
subset to mlx5e_tc_act_post_parse() and only calling
mlx5e_tc_act->post_parse() for actions inside the subset range.

Fixes: 8300f225268b ("net/mlx5e: Create new flow attr for multi table actions")
Signed-off-by: Vlad Buslov <vladbu@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.c
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.h
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c