[dpdk-dev] [PATCH] ethdev: fix variable length flow elements support
Ferruh Yigit
ferruh.yigit at intel.com
Wed Nov 3 22:04:17 CET 2021
On 10/26/2021 10:05 AM, Gregory Etelson wrote:
> RTE flow API defines two flow items and actions types - common
> and PMD private. Common RTE flow types are defined in rte_flow.h
> while PMD private types restricted to specific PMD only.
> RTE flow API allows PMD private types in flow rule,
> but it must not try to interpret private item or acton properties.
>
> Current implementation tried to locate PMD private element, item or
> action, in common flow elements records.
>
> The patch restricts access to common flow elements records for
> non-private PMD types only.
>
> Fixes: 6cf72047332b ("ethdev: support flow elements with variable length")
>
> Signed-off-by: Gregory Etelson <getelson at nvidia.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo at nvidia.com>
> ---
> lib/ethdev/rte_flow.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c
> index d268784532..a93f68abbc 100644
> --- a/lib/ethdev/rte_flow.c
> +++ b/lib/ethdev/rte_flow.c
> @@ -54,11 +54,13 @@ rte_flow_conv_copy(void *buf, const void *data, const size_t size,
> /**
> * Allow PMD private flow item
> */
> - size_t sz = type >= 0 ? desc[type].size : sizeof(void *);
> + bool rte_type = type >= 0;
> +
> + size_t sz = rte_type ? desc[type].size : sizeof(void *);
> if (buf == NULL || data == NULL)
> return 0;
> rte_memcpy(buf, data, (size > sz ? sz : size));
> - if (desc[type].desc_fn)
Was this (possible) negative array index intentional, or are you fixing it?
> + if (rte_type && desc[type].desc_fn)
> sz += desc[type].desc_fn(size > 0 ? buf : NULL, data);
> return sz;
> }
>
More information about the dev
mailing list