mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-16 18:08:20 +00:00
net/sched: cls_api: Fix flow action initialization
The cited commit refactored the flow action initialization sequence to use an interface method when translating tc action instances to flow offload objects. The refactored version skips the initialization of the generic flow action attributes for tc actions, such as pedit, that allocate more than one offload entry. This can cause potential issues for drivers mapping flow action ids. Populate the generic flow action fields for all the flow action entries. Fixes: c54e1d920f04 ("flow_offload: add ops to tc_action_ops for flow action setup") Signed-off-by: Oz Shlomo <ozsh@nvidia.com> Reviewed-by: Roi Dayan <roid@nvidia.com> ---- v1 -> v2: - coalese the generic flow action fields initialization to a single loop Reviewed-by: Baowen Zheng <baowen.zheng@corigine.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3b15b3e93e
commit
c0f47c2822
@ -3533,7 +3533,7 @@ int tc_setup_action(struct flow_action *flow_action,
|
||||
struct tc_action *actions[],
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
int i, j, index, err = 0;
|
||||
int i, j, k, index, err = 0;
|
||||
struct tc_action *act;
|
||||
|
||||
BUILD_BUG_ON(TCA_ACT_HW_STATS_ANY != FLOW_ACTION_HW_STATS_ANY);
|
||||
@ -3553,14 +3553,18 @@ int tc_setup_action(struct flow_action *flow_action,
|
||||
if (err)
|
||||
goto err_out_locked;
|
||||
|
||||
entry->hw_stats = tc_act_hw_stats(act->hw_stats);
|
||||
entry->hw_index = act->tcfa_index;
|
||||
index = 0;
|
||||
err = tc_setup_offload_act(act, entry, &index, extack);
|
||||
if (!err)
|
||||
j += index;
|
||||
else
|
||||
if (err)
|
||||
goto err_out_locked;
|
||||
|
||||
for (k = 0; k < index ; k++) {
|
||||
entry[k].hw_stats = tc_act_hw_stats(act->hw_stats);
|
||||
entry[k].hw_index = act->tcfa_index;
|
||||
}
|
||||
|
||||
j += index;
|
||||
|
||||
spin_unlock_bh(&act->tcfa_lock);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user