[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