This restriction was in place to avoid problems with recursive attempts
to aquire the flag lock/store lock from within a provider's init function.
Since those locks are no longer held when calling the init function there
is no reason for the restriction any more.
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15854)
max = sk_OSSL_PROVIDER_num(store->providers);
for (i = 0; i < max; i++) {
prov = sk_OSSL_PROVIDER_value(store->providers, i);
- /*
- * We require register_child_cb to be called during a provider init
- * function. The currently initing provider will never be activated yet
- * and we we should not attempt to aquire the flag_lock for it.
- */
- if (prov == thisprov)
- continue;
+
if (!CRYPTO_THREAD_read_lock(prov->flag_lock))
break;
/*