From mboxrd@z Thu Jan 1 00:00:00 1970 From: Emmanuel Roullit Subject: [PATCH] rte_table: ensure prev bucket has a valid pointer Date: Tue, 24 Jan 2017 21:38:30 +0100 Message-ID: <20170124203830.5691-1-emmanuel.roullit@gmail.com> Cc: dev@dpdk.org, stable@dpdk.org To: cristian.dumitrescu@intel.com Return-path: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Fixes: 43f15e28377f ("table: fix verification on hash bucket header alignment") Signed-off-by: Emmanuel Roullit --- lib/librte_table/rte_table_hash_key16.c | 7 +++++-- lib/librte_table/rte_table_hash_key32.c | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/librte_table/rte_table_hash_key16.c b/lib/librte_table/rte_table_hash_key16.c index 08d4d77eb..9c04e7f5e 100644 --- a/lib/librte_table/rte_table_hash_key16.c +++ b/lib/librte_table/rte_table_hash_key16.c @@ -483,8 +483,11 @@ rte_table_hash_entry_add_key16_ext( bucket = (struct rte_bucket_4_16 *) &f->memory[(f->n_buckets + bucket_index) * f->bucket_size]; - bucket_prev->next = bucket; - bucket_prev->next_valid = 1; + + if (bucket_prev) { + bucket_prev->next = bucket; + bucket_prev->next_valid = 1; + } bucket->signature[0] = signature; memcpy(bucket->key[0], key, f->key_size); diff --git a/lib/librte_table/rte_table_hash_key32.c b/lib/librte_table/rte_table_hash_key32.c index 161f6b7a7..27e221be9 100644 --- a/lib/librte_table/rte_table_hash_key32.c +++ b/lib/librte_table/rte_table_hash_key32.c @@ -471,8 +471,11 @@ rte_table_hash_entry_add_key32_ext( bucket = (struct rte_bucket_4_32 *) &f->memory[(f->n_buckets + bucket_index) * f->bucket_size]; - bucket_prev->next = bucket; - bucket_prev->next_valid = 1; + + if (bucket_prev) { + bucket_prev->next = bucket; + bucket_prev->next_valid = 1; + } bucket->signature[0] = signature; memcpy(bucket->key[0], key, f->key_size); -- 2.11.0