[dpdk-dev] [PATCH] x86: fix atomic exchange for 32-bit

Konstantin Ananyev konstantin.ananyev at intel.com
Wed May 2 15:58:26 CEST 2018


should break out of loop when rte_atomic64_cmpset() retruns non-zero.

Fixes: ff2863570fcc ("eal: introduce atomic exchange operation")

Signed-off-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
---
 lib/librte_eal/common/include/arch/x86/rte_atomic_32.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h b/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
index 8d711b6f6..a932f3540 100644
--- a/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
+++ b/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
@@ -105,7 +105,7 @@ rte_atomic64_exchange(volatile uint64_t *dest, uint64_t val)
 
 	do {
 		old = *dest;
-	} while (rte_atomic64_cmpset(dest, old, val));
+	} while (rte_atomic64_cmpset(dest, old, val) == 0);
 
 	return old;
 }
-- 
2.13.6



More information about the dev mailing list