[PATCH] app/testpmd: fix flex item link parsing
Stephen Hemminger
stephen at networkplumber.org
Thu Nov 13 23:38:13 CET 2025
On Thu, 13 Nov 2025 22:17:25 +0200
Maayan Kashani <mkashani at nvidia.com> wrote:
> The flex_link_item_parse function was using FLEX_MAX_FLOW_PATTERN_LENGTH
> for all memcpy operations regardless of the actual flow item type. This
> could lead to copying incorrect amounts of data.
>
> This patch adds a switch statement to determine the correct size based
> on the actual flow item type (IPv4, IPv6, UDP, TCP) and uses that size
> for the memcpy operations on spec, mask, and last fields.
>
> Also adds validation to reject unsupported item types.
>
> Fixes: 59f3a8acbcdb ("app/testpmd: add flex item commands")
> Cc: stable at dpdk.org
>
> Signed-off-by: Maayan Kashani <mkashani at nvidia.com>
> ---
> app/test-pmd/cmd_flex_item.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/app/test-pmd/cmd_flex_item.c b/app/test-pmd/cmd_flex_item.c
> index e6e1cefeb3d..ec19ab63e75 100644
> --- a/app/test-pmd/cmd_flex_item.c
> +++ b/app/test-pmd/cmd_flex_item.c
> @@ -134,6 +134,7 @@ flex_link_item_parse(const char *src, struct rte_flow_item *item)
> struct rte_flow_attr *attr;
> struct rte_flow_item *pattern;
> struct rte_flow_action *actions;
> + size_t sz = 0;
>
> sprintf(flow_rule,
> "flow create 0 pattern %s / end actions drop / end", src);
> @@ -143,21 +144,24 @@ flex_link_item_parse(const char *src, struct rte_flow_item *item)
> if (ret)
> return ret;
> item->type = pattern->type;
> + ret = rte_flow_conv(RTE_FLOW_CONV_OP_ITEM_MASK, NULL, 0, item, NULL);
> + if (ret > 0)
> + sz = ret;
You don't really need a temporary variable sz, can't you just use the
return value directly or are you concerned about signed/unsigned mismatch.
If concerned about signed/unsigned mismatch warnings then would need
cast on the assignment to sz.
More information about the dev
mailing list