From: Pauli Date: Wed, 21 Jun 2023 23:29:24 +0000 (+1000) Subject: dso: update to structure based atomics X-Git-Tag: openssl-3.2.0-alpha1~556 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aaab365c5afb950b9ffaa2916635a18e0d34fa98;p=thirdparty%2Fopenssl.git dso: update to structure based atomics Reviewed-by: Tomas Mraz Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/21260) --- diff --git a/crypto/dso/dso_lib.c b/crypto/dso/dso_lib.c index a73d91e8397..7680c40547a 100644 --- a/crypto/dso/dso_lib.c +++ b/crypto/dso/dso_lib.c @@ -25,10 +25,7 @@ static DSO *DSO_new_method(DSO_METHOD *meth) return NULL; } ret->meth = DSO_METHOD_openssl(); - ret->references = 1; - ret->lock = CRYPTO_THREAD_lock_new(); - if (ret->lock == NULL) { - ERR_raise(ERR_LIB_DSO, ERR_R_CRYPTO_LIB); + if (!CRYPTO_NEW_REF(&ret->references, 1)) { sk_void_free(ret->meth_data); OPENSSL_free(ret); return NULL; @@ -54,7 +51,7 @@ int DSO_free(DSO *dso) if (dso == NULL) return 1; - if (CRYPTO_DOWN_REF(&dso->references, &i, dso->lock) <= 0) + if (CRYPTO_DOWN_REF(&dso->references, &i) <= 0) return 0; REF_PRINT_COUNT("DSO", dso); @@ -77,7 +74,7 @@ int DSO_free(DSO *dso) sk_void_free(dso->meth_data); OPENSSL_free(dso->filename); OPENSSL_free(dso->loaded_filename); - CRYPTO_THREAD_lock_free(dso->lock); + CRYPTO_FREE_REF(&dso->references); OPENSSL_free(dso); return 1; } @@ -96,7 +93,7 @@ int DSO_up_ref(DSO *dso) return 0; } - if (CRYPTO_UP_REF(&dso->references, &i, dso->lock) <= 0) + if (CRYPTO_UP_REF(&dso->references, &i) <= 0) return 0; REF_PRINT_COUNT("DSO", dso); diff --git a/crypto/dso/dso_local.h b/crypto/dso/dso_local.h index 8aa29c1826f..3100ba08446 100644 --- a/crypto/dso/dso_local.h +++ b/crypto/dso/dso_local.h @@ -61,7 +61,6 @@ struct dso_st { * loaded. */ char *loaded_filename; - CRYPTO_RWLOCK *lock; }; struct dso_meth_st {