]> git.ipfire.org Git - thirdparty/openssl.git/commit - util/libcrypto.num
Add CRYPTO_atomic_store api
authorNeil Horman <nhorman@openssl.org>
Fri, 8 Mar 2024 16:58:07 +0000 (11:58 -0500)
committerPauli <ppzgs1@gmail.com>
Wed, 24 Apr 2024 02:03:03 +0000 (12:03 +1000)
commit7e45ac6891ade57cb0141402745d144c4ce342cb
tree674f533e5a639320afa6e15cd847c6818b5ef0e6
parentf39a86281883bd7ff0b3791ed203756d055c001b
Add CRYPTO_atomic_store api

Generally we can get away with just using CRYPTO_atomic_load to do
stores by reversing the source and target variables, but doing so
creates a problem for the thread sanitizer as CRYPTO_atomic_load hard
codes an __ATOMIC_ACQUIRE constraint, which confuses tsan into thinking
that loads and stores aren't properly ordered, leading to RAW/WAR
hazzards getting reported.  Instead create a CRYPTO_atomic_store api
that is identical to the load variant, save for the fact that the value
is a unit64_t rather than a pointer that gets stored using an
__ATOMIC_RELEASE constraint, satisfying tsan.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23671)
crypto/threads_none.c
crypto/threads_pthread.c
crypto/threads_win.c
doc/man3/CRYPTO_THREAD_run_once.pod
include/openssl/crypto.h.in
util/libcrypto.num