From: Richard Levitte Date: Wed, 24 Aug 2016 10:01:39 +0000 (+0200) Subject: CRYPTO_atomic_add(): use acquire release memory order rather than relaxed X-Git-Tag: OpenSSL_1_1_0~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=11fc6c761165283f5aed9aed5edd65c1bb963e79;p=thirdparty%2Fopenssl.git CRYPTO_atomic_add(): use acquire release memory order rather than relaxed For increments, the relaxed model is fine. For decrements, it's recommended to use the acquire release model. We therefore go for the latter. Reviewed-by: Andy Polyakov --- diff --git a/crypto/threads_pthread.c b/crypto/threads_pthread.c index 72ea83892bb..9f4ae76bf85 100644 --- a/crypto/threads_pthread.c +++ b/crypto/threads_pthread.c @@ -109,8 +109,8 @@ int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b) int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock) { -# if defined(__GNUC__) && defined(__ATOMIC_RELAXED) - *ret = __atomic_add_fetch(val, amount, __ATOMIC_RELAXED); +# if defined(__GNUC__) && defined(__ATOMIC_ACQ_REL) + *ret = __atomic_add_fetch(val, amount, __ATOMIC_ACQ_REL); # else if (!CRYPTO_THREAD_write_lock(lock)) return 0;