|
@@ -0,0 +1,58 @@
|
|
|
+From ba8a599395f8b770c76316b5f5b0f3838567014f Mon Sep 17 00:00:00 2001
|
|
|
+From: Tom Cosgrove <tom.cosgrove@arm.com>
|
|
|
+Date: Tue, 26 Mar 2024 13:18:00 +0000
|
|
|
+Subject: [PATCH] aarch64: fix BTI in bsaes assembly code
|
|
|
+
|
|
|
+In Arm systems where BTI is enabled but the Crypto extensions are not (more
|
|
|
+likely in FVPs than in real hardware), the bit-sliced assembler code will
|
|
|
+be used. However, this wasn't annotated with BTI instructions when BTI was
|
|
|
+enabled, so the moment libssl jumps into this code it (correctly) aborts.
|
|
|
+
|
|
|
+Solve this by adding the missing BTI landing pads.
|
|
|
+
|
|
|
+Upstream-Status: Submitted [https://github.com/openssl/openssl/pull/23982]
|
|
|
+Signed-off-by: Ross Burton <ross.burton@arm.com>
|
|
|
+---
|
|
|
+ crypto/aes/asm/bsaes-armv8.pl | 5 ++++-
|
|
|
+ 1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
+
|
|
|
+diff --git a/crypto/aes/asm/bsaes-armv8.pl b/crypto/aes/asm/bsaes-armv8.pl
|
|
|
+index b3c97e439f..c3c5ff3e05 100644
|
|
|
+--- a/crypto/aes/asm/bsaes-armv8.pl
|
|
|
++++ b/crypto/aes/asm/bsaes-armv8.pl
|
|
|
+@@ -1018,6 +1018,7 @@ _bsaes_key_convert:
|
|
|
+ // Initialisation vector overwritten with last quadword of ciphertext
|
|
|
+ // No output registers, usual AAPCS64 register preservation
|
|
|
+ ossl_bsaes_cbc_encrypt:
|
|
|
++ AARCH64_VALID_CALL_TARGET
|
|
|
+ cmp x2, #128
|
|
|
+ bhs .Lcbc_do_bsaes
|
|
|
+ b AES_cbc_encrypt
|
|
|
+@@ -1270,7 +1271,7 @@ ossl_bsaes_cbc_encrypt:
|
|
|
+ // Output text filled in
|
|
|
+ // No output registers, usual AAPCS64 register preservation
|
|
|
+ ossl_bsaes_ctr32_encrypt_blocks:
|
|
|
+-
|
|
|
++ AARCH64_VALID_CALL_TARGET
|
|
|
+ cmp x2, #8 // use plain AES for
|
|
|
+ blo .Lctr_enc_short // small sizes
|
|
|
+
|
|
|
+@@ -1476,6 +1477,7 @@ ossl_bsaes_ctr32_encrypt_blocks:
|
|
|
+ // Output ciphertext filled in
|
|
|
+ // No output registers, usual AAPCS64 register preservation
|
|
|
+ ossl_bsaes_xts_encrypt:
|
|
|
++ AARCH64_VALID_CALL_TARGET
|
|
|
+ // Stack layout:
|
|
|
+ // sp ->
|
|
|
+ // nrounds*128-96 bytes: key schedule
|
|
|
+@@ -1921,6 +1923,7 @@ ossl_bsaes_xts_encrypt:
|
|
|
+ // Output plaintext filled in
|
|
|
+ // No output registers, usual AAPCS64 register preservation
|
|
|
+ ossl_bsaes_xts_decrypt:
|
|
|
++ AARCH64_VALID_CALL_TARGET
|
|
|
+ // Stack layout:
|
|
|
+ // sp ->
|
|
|
+ // nrounds*128-96 bytes: key schedule
|
|
|
+--
|
|
|
+2.34.1
|
|
|
+
|