[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