hash: fix free slot check
authorPablo de Lara <pablo.de.lara.guarch@intel.com>
Tue, 4 Oct 2016 07:16:34 +0000 (08:16 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 4 Oct 2016 09:40:40 +0000 (11:40 +0200)
In function rte_hash_cuckoo_insert_mw_tm, while looking for
an empty slot, only the first entry in the bucket was being checked,
as key_idx array was not being iterated.

Fixes: 5fc74c2e146d ("hash: check if slot is empty with key index")

Reported-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_hash/rte_cuckoo_hash_x86.h

index e16d69c..7ffa56f 100644 (file)
@@ -53,7 +53,7 @@ rte_hash_cuckoo_insert_mw_tm(struct rte_hash_bucket *prim_bkt,
                        */
                        for (i = 0; i < RTE_HASH_BUCKET_ENTRIES; i++) {
                                /* Check if slot is available */
-                               if (likely(prim_bkt->key_idx == EMPTY_SLOT)) {
+                               if (likely(prim_bkt->key_idx[i] == EMPTY_SLOT)) {
                                        prim_bkt->signatures[i].current = sig;
                                        prim_bkt->signatures[i].alt = alt_hash;
                                        prim_bkt->key_idx[i] = new_idx;