Skip to contentSkip to conversation

FAILED: patch "[PATCH] crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling" failed to apply to 3.18-stable tree

PATCH [email protected] 1 participant 1 message Mar 20, 2019

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 3.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From eaf46edf6ea89675bd36245369c8de5063a0272c Mon Sep 17 00:00:00 2001
From: Ard Biesheuvel <[email protected]>
Date: Thu, 24 Jan 2019 17:33:45 +0100
Subject: [PATCH] crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling

The NEON MAC calculation routine fails to handle the case correctly where there is some data in the buffer, and the input fills it up exactly. In this case, we enter the loop at the end with w8 == 0, while a negative value is assumed, and so the loop carries on until the increment of the 32-bit counter wraps around, which is quite obviously wrong.

So omit the loop altogether in this case, and exit right away.

Fixes a3fd82105b9d1 ("arm64/crypto: AES in CCM mode using ARMv8 Crypto ...")
arch/arm64/crypto/aes-ce-ccm-core.S +3 -2
index e3a375c4cb83..1b151442dac1 100644
@@ -74,12 +74,13 @@ ENTRY(ce_aes_ccm_auth_data)
 	beq	10f
 	ext	v0.16b, v0.16b, v0.16b, #1	/* rotate out the mac bytes */
 	b	7b
-8:	mov	w7, w8
+8:	cbz	w8, 91f
+	mov	w7, w8
 	add	w8, w8, #16
 9:	ext	v1.16b, v1.16b, v1.16b, #1
 	adds	w7, w7, #1
 	bne	9b
-	eor	v0.16b, v0.16b, v1.16b
+91:	eor	v0.16b, v0.16b, v1.16b
 	st1	{v0.16b}, [x0]
 10:	str	w8, [x3]
 	ret