[PATCH 5/6] rijndael-aesni: prevent inlining AESNI functions by LTO

Jussi Kivilinna jussi.kivilinna at iki.fi
Mon Dec 29 19:01:38 CET 2025


* cipher/rijndael-aesni.c (_gcry_aes_aesni_do_setkey)
(_gcry_aes_aesni_prepare_decryption, _gcry_aes_aesni_encrypt)
(_gcry_aes_aesni_ecb_crypt, _gcry_aes_aesni_cfb_enc)
(_gcry_aes_aesni_cbc_enc, _gcry_aes_aesni_ctr_enc)
(_gcry_aes_aesni_ctr32le_enc, _gcry_aes_aesni_decrypt)
(_gcry_aes_aesni_cfb_dec, _gcry_aes_aesni_cbc_dec)
(_gcry_aes_aesni_ocb_crypt, _gcry_aes_aesni_ocb_auth)
(_gcry_aes_aesni_xts_crypt): Mark function as noinline.
--

Signed-off-by: Jussi Kivilinna <jussi.kivilinna at iki.fi>
---
 cipher/rijndael-aesni.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/cipher/rijndael-aesni.c b/cipher/rijndael-aesni.c
index 906737a6..eedd89e9 100644
--- a/cipher/rijndael-aesni.c
+++ b/cipher/rijndael-aesni.c
@@ -165,7 +165,7 @@ aes_ocb_get_l (gcry_cipher_hd_t c, u64 n)
 # endif
 #endif
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_do_setkey (RIJNDAEL_context *ctx, const byte *key)
 {
   aesni_prepare_2_7_variable;
@@ -447,7 +447,7 @@ do_aesni_prepare_decryption (RIJNDAEL_context *ctx)
 #undef DO_AESNI_AESIMC
 }
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_prepare_decryption (RIJNDAEL_context *ctx)
 {
   aesni_prepare();
@@ -1698,7 +1698,7 @@ do_aesni_ctr_8 (const RIJNDAEL_context *ctx,
 #endif /* __x86_64__ */
 
 
-unsigned int ASM_FUNC_ATTR
+unsigned int ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_encrypt (const RIJNDAEL_context *ctx, unsigned char *dst,
                          const unsigned char *src)
 {
@@ -1717,7 +1717,7 @@ _gcry_aes_aesni_encrypt (const RIJNDAEL_context *ctx, unsigned char *dst,
 }
 
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_ecb_crypt (RIJNDAEL_context *ctx, unsigned char *dst,
 			   const unsigned char *src, size_t nblocks,
 			   int encrypt)
@@ -1871,7 +1871,7 @@ _gcry_aes_aesni_ecb_crypt (RIJNDAEL_context *ctx, unsigned char *dst,
 }
 
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_cfb_enc (RIJNDAEL_context *ctx, unsigned char *iv,
                          unsigned char *outbuf, const unsigned char *inbuf,
                          size_t nblocks)
@@ -1970,7 +1970,7 @@ _gcry_aes_aesni_cfb_enc (RIJNDAEL_context *ctx, unsigned char *iv,
 }
 
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_cbc_enc (RIJNDAEL_context *ctx, unsigned char *iv,
                          unsigned char *outbuf, const unsigned char *inbuf,
                          size_t nblocks, int cbc_mac)
@@ -2082,7 +2082,7 @@ _gcry_aes_aesni_cbc_enc (RIJNDAEL_context *ctx, unsigned char *iv,
 }
 
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_ctr_enc (RIJNDAEL_context *ctx, unsigned char *ctr,
                          unsigned char *outbuf, const unsigned char *inbuf,
                          size_t nblocks)
@@ -2136,7 +2136,7 @@ _gcry_aes_aesni_ctr_enc (RIJNDAEL_context *ctx, unsigned char *ctr,
 }
 
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_ctr32le_enc (RIJNDAEL_context *ctx, unsigned char *ctr,
 			     unsigned char *outbuf, const unsigned char *inbuf,
 			     size_t nblocks)
@@ -2328,7 +2328,7 @@ _gcry_aes_aesni_ctr32le_enc (RIJNDAEL_context *ctx, unsigned char *ctr,
 }
 
 
-unsigned int ASM_FUNC_ATTR
+unsigned int ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_decrypt (const RIJNDAEL_context *ctx, unsigned char *dst,
                          const unsigned char *src)
 {
@@ -2347,7 +2347,7 @@ _gcry_aes_aesni_decrypt (const RIJNDAEL_context *ctx, unsigned char *dst,
 }
 
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_cfb_dec (RIJNDAEL_context *ctx, unsigned char *iv,
                          unsigned char *outbuf, const unsigned char *inbuf,
                          size_t nblocks)
@@ -2524,7 +2524,7 @@ _gcry_aes_aesni_cfb_dec (RIJNDAEL_context *ctx, unsigned char *iv,
 }
 
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_cbc_dec (RIJNDAEL_context *ctx, unsigned char *iv,
                          unsigned char *outbuf, const unsigned char *inbuf,
                          size_t nblocks)
@@ -3855,7 +3855,7 @@ aesni_ocb_dec (gcry_cipher_hd_t c, void *outbuf_arg,
 }
 
 
-size_t ASM_FUNC_ATTR
+size_t ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_ocb_crypt(gcry_cipher_hd_t c, void *outbuf_arg,
                           const void *inbuf_arg, size_t nblocks, int encrypt)
 {
@@ -3866,7 +3866,7 @@ _gcry_aes_aesni_ocb_crypt(gcry_cipher_hd_t c, void *outbuf_arg,
 }
 
 
-size_t ASM_FUNC_ATTR
+size_t ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_ocb_auth (gcry_cipher_hd_t c, const void *abuf_arg,
                           size_t nblocks)
 {
@@ -5015,7 +5015,7 @@ _gcry_aes_aesni_xts_dec (RIJNDAEL_context *ctx, unsigned char *tweak,
 }
 
 
-void ASM_FUNC_ATTR
+void ASM_FUNC_ATTR_NOINLINE
 _gcry_aes_aesni_xts_crypt (RIJNDAEL_context *ctx, unsigned char *tweak,
 			   unsigned char *outbuf, const unsigned char *inbuf,
 			   size_t nblocks, int encrypt)
-- 
2.51.0




More information about the Gcrypt-devel mailing list