diff options
author | Pauli <pauli@openssl.org> | 2023-06-22 09:48:49 +1000 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2023-07-01 21:18:25 +1000 |
commit | 6be83ac172aac93b49ae0b847fd5ac9de6ab3ff5 (patch) | |
tree | 87100def56be88bd30b7ad3d74ab9959c9258d7a /crypto/evp/exchange.c | |
parent | a903a132a4256d34f20cb2f7636247b41fd85965 (diff) |
evp: update to structure based atomics
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21260)
Diffstat (limited to 'crypto/evp/exchange.c')
-rw-r--r-- | crypto/evp/exchange.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/crypto/evp/exchange.c b/crypto/evp/exchange.c index a9311b2792..195c32cfc9 100644 --- a/crypto/evp/exchange.c +++ b/crypto/evp/exchange.c @@ -25,15 +25,12 @@ static EVP_KEYEXCH *evp_keyexch_new(OSSL_PROVIDER *prov) if (exchange == NULL) return NULL; - exchange->lock = CRYPTO_THREAD_lock_new(); - if (exchange->lock == NULL) { - ERR_raise(ERR_LIB_EVP, ERR_R_CRYPTO_LIB); + if (!CRYPTO_NEW_REF(&exchange->refcnt, 1)) { OPENSSL_free(exchange); return NULL; } exchange->prov = prov; ossl_provider_up_ref(prov); - exchange->refcnt = 1; return exchange; } @@ -148,12 +145,12 @@ void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange) if (exchange == NULL) return; - CRYPTO_DOWN_REF(&exchange->refcnt, &i, exchange->lock); + CRYPTO_DOWN_REF(&exchange->refcnt, &i); if (i > 0) return; OPENSSL_free(exchange->type_name); ossl_provider_free(exchange->prov); - CRYPTO_THREAD_lock_free(exchange->lock); + CRYPTO_FREE_REF(&exchange->refcnt); OPENSSL_free(exchange); } @@ -161,7 +158,7 @@ int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange) { int ref = 0; - CRYPTO_UP_REF(&exchange->refcnt, &ref, exchange->lock); + CRYPTO_UP_REF(&exchange->refcnt, &ref); return 1; } |