Commit 11fc6c76 authored by Richard Levitte's avatar Richard Levitte Committed by Matt Caswell
Browse files

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: default avatarAndy Polyakov <appro@openssl.org>
parent cb4b54c2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;