crypto: arm64/aes-modes - use frame_push/pop macros consistently
authorArd Biesheuvel <ardb@kernel.org>
Tue, 29 Nov 2022 16:48:50 +0000 (17:48 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 9 Dec 2022 10:45:00 +0000 (18:45 +0800)
Use the frame_push and frame_pop macros to create the stack frames in
the AES chaining mode wrappers so that they will get PAC and/or shadow
call stack protection when configured.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm64/crypto/aes-modes.S

index 5abc834..0e834a2 100644 (file)
@@ -52,8 +52,7 @@ SYM_FUNC_END(aes_decrypt_block5x)
         */
 
 AES_FUNC_START(aes_ecb_encrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        enc_prepare     w3, x2, x5
 
@@ -77,14 +76,13 @@ ST5(        st1             {v4.16b}, [x0], #16             )
        subs            w4, w4, #1
        bne             .Lecbencloop
 .Lecbencout:
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 AES_FUNC_END(aes_ecb_encrypt)
 
 
 AES_FUNC_START(aes_ecb_decrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        dec_prepare     w3, x2, x5
 
@@ -108,7 +106,7 @@ ST5(        st1             {v4.16b}, [x0], #16             )
        subs            w4, w4, #1
        bne             .Lecbdecloop
 .Lecbdecout:
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 AES_FUNC_END(aes_ecb_decrypt)
 
@@ -171,9 +169,6 @@ AES_FUNC_END(aes_cbc_encrypt)
 AES_FUNC_END(aes_essiv_cbc_encrypt)
 
 AES_FUNC_START(aes_essiv_cbc_decrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
-
        ld1             {cbciv.16b}, [x5]               /* get iv */
 
        mov             w8, #14                         /* AES-256: 14 rounds */
@@ -182,11 +177,9 @@ AES_FUNC_START(aes_essiv_cbc_decrypt)
        b               .Lessivcbcdecstart
 
 AES_FUNC_START(aes_cbc_decrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
-
        ld1             {cbciv.16b}, [x5]               /* get iv */
 .Lessivcbcdecstart:
+       frame_push      0
        dec_prepare     w3, x2, x6
 
 .LcbcdecloopNx:
@@ -236,7 +229,7 @@ ST5(        st1             {v4.16b}, [x0], #16             )
        bne             .Lcbcdecloop
 .Lcbcdecout:
        st1             {cbciv.16b}, [x5]               /* return iv */
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 AES_FUNC_END(aes_cbc_decrypt)
 AES_FUNC_END(aes_essiv_cbc_decrypt)
@@ -337,8 +330,7 @@ AES_FUNC_END(aes_cbc_cts_decrypt)
        BLOCKS          .req x13
        BLOCKS_W        .req w13
 
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        enc_prepare     ROUNDS_W, KEY, IV_PART
        ld1             {vctr.16b}, [IV]
@@ -481,7 +473,7 @@ ST5(        st1             {v4.16b}, [OUT], #16            )
        .if !\xctr
                st1             {vctr.16b}, [IV] /* return next CTR value */
        .endif
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 
 .Lctrtail\xctr:
@@ -645,8 +637,7 @@ AES_FUNC_END(aes_xctr_encrypt)
        .endm
 
 AES_FUNC_START(aes_xts_encrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        ld1             {v4.16b}, [x6]
        xts_load_mask   v8
@@ -704,7 +695,7 @@ AES_FUNC_START(aes_xts_encrypt)
        st1             {v0.16b}, [x0]
 .Lxtsencret:
        st1             {v4.16b}, [x6]
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 
 .LxtsencctsNx:
@@ -732,8 +723,7 @@ AES_FUNC_START(aes_xts_encrypt)
 AES_FUNC_END(aes_xts_encrypt)
 
 AES_FUNC_START(aes_xts_decrypt)
-       stp             x29, x30, [sp, #-16]!
-       mov             x29, sp
+       frame_push      0
 
        /* subtract 16 bytes if we are doing CTS */
        sub             w8, w4, #0x10
@@ -794,7 +784,7 @@ AES_FUNC_START(aes_xts_decrypt)
        b               .Lxtsdecloop
 .Lxtsdecout:
        st1             {v4.16b}, [x6]
-       ldp             x29, x30, [sp], #16
+       frame_pop
        ret
 
 .Lxtsdeccts: