[dpdk-stable] patch 'hash: fix a multi-writer race condition' has been queued to LTS release 16.11.8
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Tue Jul 24 18:07:48 CEST 2018
Hi,
FYI, your patch has been queued to LTS release 16.11.8
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/26/18. So please
shout if anyone has objections.
Thanks.
Luca Boccassi
---
>From e26dac448835a5a3f7c213cd797e96e0f7bda599 Mon Sep 17 00:00:00 2001
From: Yipeng Wang <yipeng1.wang at intel.com>
Date: Tue, 10 Jul 2018 09:59:55 -0700
Subject: [PATCH] hash: fix a multi-writer race condition
[ upstream commit eb067d431d9411a0054bc3ec084b0e9eadbb0a16 ]
Current multi-writer implementation uses Intel TSX to
protect the cuckoo path moving but not the cuckoo
path searching. After searching, we need to verify again if
the same empty slot still exists at the beginning of the TSX
region. Otherwise another writer could occupy the empty slot
before the TSX region. Current code does not verify.
Fixes: be856325cba3 ("hash: add scalable multi-writer insertion with Intel TSX")
Signed-off-by: Yipeng Wang <yipeng1.wang at intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch at intel.com>
---
lib/librte_hash/rte_cuckoo_hash_x86.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/librte_hash/rte_cuckoo_hash_x86.h b/lib/librte_hash/rte_cuckoo_hash_x86.h
index 0c94244a6..a2f1663ec 100644
--- a/lib/librte_hash/rte_cuckoo_hash_x86.h
+++ b/lib/librte_hash/rte_cuckoo_hash_x86.h
@@ -95,6 +95,9 @@ rte_hash_cuckoo_move_insert_mw_tm(const struct rte_hash *h,
while (try < RTE_HASH_TSX_MAX_RETRY) {
status = rte_xbegin();
if (likely(status == RTE_XBEGIN_STARTED)) {
+ /* In case empty slot was gone before entering TSX */
+ if (curr_bkt->key_idx[curr_slot] != EMPTY_SLOT)
+ rte_xabort(RTE_XABORT_CUCKOO_PATH_INVALIDED);
while (likely(curr_node->prev != NULL)) {
prev_node = curr_node->prev;
prev_bkt = prev_node->bkt;
--
2.18.0
More information about the stable
mailing list