As indirect action conf fills the indirect action handler, while converting indirect action, the action conf(action handler) should be copied from original indirect action conf instead of duplicating the action handler memory.
Fixes: 4b61b8774be9 ("ethdev: introduce indirect flow action") Signed-off-by: Suanming Mou <suanmi...@nvidia.com> --- lib/ethdev/rte_flow.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c index 69e6e749f7..ff740f19a4 100644 --- a/lib/ethdev/rte_flow.c +++ b/lib/ethdev/rte_flow.c @@ -889,7 +889,15 @@ rte_flow_conv_actions(struct rte_flow_action *dst, src -= num; dst -= num; do { - if (src->conf) { + if (src->type == RTE_FLOW_ACTION_TYPE_INDIRECT) { + /* + * Indirect action conf fills the indirect action + * handler. Copy the action handle directly instead + * of duplicating the pointer memory. + */ + if (size) + dst->conf = src->conf; + } else if (src->conf) { off = RTE_ALIGN_CEIL(off, sizeof(double)); ret = rte_flow_conv_action_conf ((void *)(data + off), -- 2.25.1