[dpdk-dev] [PATCH] dpdk: fix a crash during rte_table_hash_key16_ext overload

Dumitrescu, Cristian cristian.dumitrescu at intel.com
Mon Mar 23 14:33:29 CET 2015



> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of
> miroslaw.walukiewicz at intel.com
> Sent: Tuesday, March 3, 2015 2:16 PM
> To: dev at dpdk.org
> Subject: [dpdk-dev] [PATCH] dpdk: fix a crash during
> rte_table_hash_key16_ext overload
> 
> From: Miroslaw Walukiewicz <miroslaw.walukiewicz at intel.com>
> 
> The hash_key16_ext table allocates a cache entries to support
> table overload cases.
> 
> The crash can occur when cache entry is free after use. The problem
> is with computing the index of the free cache entry.
> 
> The patch fixes a problem.
> 
> Signed-off-by: Mirek Walukiewicz <miroslaw.walukiewicz at intel.com>
> ---
>  lib/librte_table/rte_table_hash_key16.c |    5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/librte_table/rte_table_hash_key16.c
> b/lib/librte_table/rte_table_hash_key16.c
> index ee5f639..e0c99bd 100644
> --- a/lib/librte_table/rte_table_hash_key16.c
> +++ b/lib/librte_table/rte_table_hash_key16.c
> @@ -535,9 +535,8 @@ rte_table_hash_entry_delete_key16_ext(
> 
>  					memset(bucket, 0,
>  						sizeof(struct
> rte_bucket_4_16));
> -					bucket_index = (bucket -
> -						((struct rte_bucket_4_16 *)
> -						f->memory)) - f->n_buckets;
> +					bucket_index = (((uint8_t *)bucket -
> +						(uint8_t *)f->memory)/f-
> >bucket_size) - f->n_buckets;
>  					f->stack[f->stack_pos++] =
> bucket_index;
>  				}
> 

Acked by: Cristian Dumitrescu <cristian.dumitrescu at intel.com>

Mirek, identical issue is found at identical place in rte_table_hash_key8.c and rte_table_hash_key32.c, would you please submit the same fix for those as well?

Thanks,
Cristian



More information about the dev mailing list