aboutsummaryrefslogtreecommitdiff
path: root/crypto/s390xcap.c
diff options
context:
space:
mode:
authorTomas Mraz <tomas@openssl.org>2023-06-26 17:13:30 +0200
committerPauli <pauli@openssl.org>2023-06-28 08:30:44 +1000
commit0dee3b0421047354abd0b70cedd4c1bceaf323b0 (patch)
tree564c8a8599f3d87be24b8bf3f929588af7460aca /crypto/s390xcap.c
parentc113c8186588916f417b56bc0d9e758279e2de1f (diff)
downloadopenssl-0dee3b0421047354abd0b70cedd4c1bceaf323b0.zip
openssl-0dee3b0421047354abd0b70cedd4c1bceaf323b0.tar.gz
openssl-0dee3b0421047354abd0b70cedd4c1bceaf323b0.tar.bz2
s390xcap.c: Avoid copying structure on initialization
This is problematic on old compilers. It also avoids duplicating the read-only data. Reviewed-by: Todd Short <todd.short@me.com> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21284)
Diffstat (limited to 'crypto/s390xcap.c')
-rw-r--r--crypto/s390xcap.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/crypto/s390xcap.c b/crypto/s390xcap.c
index 59f0f3e..1c1db5c 100644
--- a/crypto/s390xcap.c
+++ b/crypto/s390xcap.c
@@ -48,14 +48,16 @@
cap->NAME[1] = ~cap->NAME[1]; \
}
-#define TOK_CPU(NAME) \
+#define TOK_CPU_ALIAS(NAME, STRUCT_NAME) \
(sscanf(tok_begin, \
" %" STR(LEN) "s %" STR(LEN) "s ", \
tok[0], tok[1]) == 1 \
&& !strcmp(tok[0], #NAME)) { \
- memcpy(cap, &NAME, sizeof(*cap)); \
+ memcpy(cap, &STRUCT_NAME, sizeof(*cap)); \
}
+#define TOK_CPU(NAME) TOK_CPU_ALIAS(NAME, NAME)
+
#ifndef OSSL_IMPLEMENT_GETAUXVAL
static sigjmp_buf ill_jmp;
static void ill_handler(int sig)
@@ -672,9 +674,8 @@ static int parse_env(struct OPENSSL_s390xcap_st *cap)
/*-
* z16 (2022) - z/Architecture POP
- * Implements MSA and MSA1-9 (same as z15).
+ * Implements MSA and MSA1-9 (same as z15, no need to repeat).
*/
- static const struct OPENSSL_s390xcap_st z16 = z15;
char *tok_begin, *tok_end, *buff, tok[S390X_STFLE_MAX][LEN + 1];
int rc, off, i, n;
@@ -730,7 +731,7 @@ static int parse_env(struct OPENSSL_s390xcap_st *cap)
else if TOK_CPU(z13)
else if TOK_CPU(z14)
else if TOK_CPU(z15)
- else if TOK_CPU(z16)
+ else if TOK_CPU_ALIAS(z16, z15)
/* whitespace(ignored) or invalid tokens */
else {