summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHongren Zheng <i@zenithal.me>2024-05-16 16:41:25 +0800
committerTomas Mraz <tomas@openssl.org>2024-05-20 10:16:11 +0200
commit4654e94a40220f49d0be2f18094bec465ce639df (patch)
tree8d639a35bc15d7a3d07e31d2e77743853cda1a64
parent564ffc19834ea561ef177a86b38c132bb8aa055d (diff)
fips provider: explicitly setup cpuid when initializing
Fixes: #23979 Previously fips module relied on OPENSSL_cpuid_setup being used as constructor by the linker to correctly setup the capability vector, either via .section .init (for x86_64) or via __attribute__((constructor)). This would make ld.so call OPENSSL_cpuid_setup before the init function for fips module. However, this early constructing behavior has several disadvantages: 1. Not all platform/toolchain supports such behavior 2. Initialisation sequence is not well defined, and some function might not be initialized when cpuid_setup is called 3. Implicit path is hard to maintain and debug Reviewed-by: Paul Dale <ppzgs1@gmail.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/24419) (cherry picked from commit a192b2439c0207ce1b04ba6137329b68f9e23680)
-rw-r--r--providers/fips/fipsprov.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/providers/fips/fipsprov.c b/providers/fips/fipsprov.c
index 6a88039423..c59f7fae31 100644
--- a/providers/fips/fipsprov.c
+++ b/providers/fips/fipsprov.c
@@ -655,6 +655,8 @@ int OSSL_provider_init_int(const OSSL_CORE_HANDLE *handle,
}
}
+ OPENSSL_cpuid_setup();
+
/* Create a context. */
if ((*provctx = ossl_prov_ctx_new()) == NULL
|| (libctx = OSSL_LIB_CTX_new()) == NULL) {