On Tue, Mar 24, 2026 at 03:56:27PM +0000, Ciara Loftus wrote:
> Commit c138a6c3bd0a ("net/i40e: validate raw flow items before
> dereferencing") rejected raw flow items when spec and mask length
> fields differ, intending to prevent out-of-bounds pattern access.
> 
> This breaks flows using the default rte_flow_item_raw_mask, which
> sets mask.length to 0xffff regardless of the spec pattern size. Remove
> the erroneous check.
> 
> Fixes: c138a6c3bd0a ("net/i40e: validate raw flow items before dereferencing")
> Cc: [email protected]
> 
> Signed-off-by: Ciara Loftus <[email protected]>
> ---
>  drivers/net/intel/i40e/i40e_flow.c | 7 -------
>  1 file changed, 7 deletions(-)
> 
> diff --git a/drivers/net/intel/i40e/i40e_flow.c 
> b/drivers/net/intel/i40e/i40e_flow.c
> index 84cfddb92d..78191a2d22 100644
> --- a/drivers/net/intel/i40e/i40e_flow.c
> +++ b/drivers/net/intel/i40e/i40e_flow.c
> @@ -2360,13 +2360,6 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev,
>                                                          "NULL RAW mask 
> pattern");
>                                       return -rte_errno;
>                               }
> -                             if (raw_spec->length != raw_mask->length) {
> -                                     rte_flow_error_set(error, EINVAL,
> -                                                        
> RTE_FLOW_ERROR_TYPE_ITEM,
> -                                                        item,
> -                                                        "RAW spec and mask 
> length mismatch");
> -                                     return -rte_errno;
> -                             }
>                       }

This looks a correct check to have. Maybe we need to check how the default
mask is generated for this case and fix things there?

>  
>                       for (i = 0; i < raw_spec->length; i++) {
> -- 
> 2.43.0
> 

Reply via email to