[PATCH v1 5/7] net/iavf: fix hash flow metadata leaks

Mandal, Anurag anurag.mandal at intel.com
Fri Oct 16 05:12:25 CEST 2026


> -----Original Message-----
> From: Anatoly Burakov <anatoly.burakov at intel.com>
> Sent: 14 October 2026 20:49
> To: dev at dpdk.org
> Subject: [PATCH v1 5/7] net/iavf: fix hash flow metadata leaks
> 
> Hash flow parsing allocates RSS metadata, but validation has no callback to
> release it. Creation also leaks the metadata if rule allocation or the request to
> add the RSS rule fails.
> 
> Add a validation callback to release the parsed metadata, and free it on both
> creation failure paths. Parsing already checks the RSS inputs; validation does
> not add or remove a rule.
> 
> Fixes: 7be10c3004be ("net/iavf: add RSS configuration for VF")
> Fixes: 215a247b5f33 ("net/iavf: refactor hash flow")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
> ---
>  drivers/net/intel/iavf/iavf_hash.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/drivers/net/intel/iavf/iavf_hash.c
> b/drivers/net/intel/iavf/iavf_hash.c
> index cef30cd08e1..6787a380f8e 100644
> --- a/drivers/net/intel/iavf/iavf_hash.c
> +++ b/drivers/net/intel/iavf/iavf_hash.c
> @@ -80,6 +80,9 @@ iavf_hash_destroy(struct iavf_adapter *ad, struct
> rte_flow *flow,  static void  iavf_hash_uninit_parser(struct iavf_adapter *ad);
> static int
> +iavf_hash_validation(struct iavf_adapter *ad, struct rte_flow *flow,
> +		     void *meta, struct rte_flow_error *error); static int
>  iavf_hash_parse_pattern_action(struct iavf_adapter *ad,
>  			       struct iavf_pattern_match_item *array,
>  			       uint32_t array_len,
> @@ -680,6 +683,7 @@ static struct iavf_flow_engine iavf_hash_engine = {
>  	.create = iavf_hash_create,
>  	.destroy = iavf_hash_destroy,
>  	.uninit = iavf_hash_uninit_parser,
> +	.validation = iavf_hash_validation,
>  	.name = "hash",
>  	.type = IAVF_FLOW_ENGINE_HASH,
>  	.rule_size = sizeof(struct virtchnl_rss_cfg), @@ -1579,6 +1583,15 @@
> iavf_hash_parse_pattern_action(struct iavf_adapter *ad,
>  	return ret;
>  }
> 
> +static int
> +iavf_hash_validation(__rte_unused struct iavf_adapter *ad,
> +		     __rte_unused struct rte_flow *flow, void *meta,
> +		     __rte_unused struct rte_flow_error *error) {
> +	rte_free(meta);
> +	return 0;
> +}
> +
>  static int
>  iavf_hash_create(__rte_unused struct iavf_adapter *ad,
>  		 __rte_unused struct rte_flow *flow, void *meta, @@ -1594,6
> +1607,7 @@ iavf_hash_create(__rte_unused struct iavf_adapter *ad,
>  		rte_flow_error_set(error, EINVAL,
>  				   RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
>  				   "No memory for rss rule");
> +		rte_free(meta);
>  		return -ENOMEM;
>  	}
> 
> @@ -1609,6 +1623,7 @@ iavf_hash_create(__rte_unused struct iavf_adapter
> *ad,
>  				   RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
>  				   "Failed to add rss rule.");
>  		rte_free(rss_cfg);
> +		rte_free(meta);
>  		return -rte_errno;
>  	}
> 
> --
> 2.52.0

Hi Anatoly, 

I had submitted similar fix  in this patch earlier.
https://patches.dpdk.org/project/dpdk/patch/20261010121255.528329-1-anurag.mandal@intel.com/

Thanks,
Anurag M





More information about the dev mailing list