]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: arm64/aes - Fix 32-bit aes_mac_update() arg treated as 64-bit
authorEric Biggers <ebiggers@kernel.org>
Wed, 18 Feb 2026 21:34:49 +0000 (13:34 -0800)
committerEric Biggers <ebiggers@kernel.org>
Mon, 9 Mar 2026 20:27:20 +0000 (13:27 -0700)
Since the 'enc_after' argument to neon_aes_mac_update() and
ce_aes_mac_update() has type 'int', it needs to be accessed using the
corresponding 32-bit register, not the 64-bit register.  The upper half
of the corresponding 64-bit register may contain garbage.

Fixes: 4860620da7e5 ("crypto: arm64/aes - add NEON/Crypto Extensions CBCMAC/CMAC/XCBC driver")
Cc: stable@vger.kernel.org
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20260218213501.136844-4-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
arch/arm64/crypto/aes-modes.S

index 0e834a2c062cf2659ba974f0546ba416fad556d1..e793478f37c1eb3e29718797296978377647f577 100644 (file)
@@ -838,7 +838,7 @@ AES_FUNC_START(aes_mac_update)
        encrypt_block   v0, w2, x1, x7, w8
        eor             v0.16b, v0.16b, v4.16b
        cmp             w3, wzr
-       csinv           x5, x6, xzr, eq
+       csinv           w5, w6, wzr, eq
        cbz             w5, .Lmacout
        encrypt_block   v0, w2, x1, x7, w8
        st1             {v0.16b}, [x4]                  /* return dg */
@@ -852,7 +852,7 @@ AES_FUNC_START(aes_mac_update)
        eor             v0.16b, v0.16b, v1.16b          /* ..and xor with dg */
 
        subs            w3, w3, #1
-       csinv           x5, x6, xzr, eq
+       csinv           w5, w6, wzr, eq
        cbz             w5, .Lmacout
 
 .Lmacenc: