[for-stable-4.4,12/50] arm/arm64: smccc: Make function identifiers an unsigned quantity

Message ID 20191108123554.29004-13-ardb@kernel.org
State New
Headers show
  • Untitled series #24813
Related show

Commit Message

Ard Biesheuvel Nov. 8, 2019, 12:35 p.m.
From: Mark Rutland <mark.rutland@arm.com>

From: Marc Zyngier <marc.zyngier@arm.com>

commit ded4c39e93f3b72968fdb79baba27f3b83dad34c upstream.

Function identifiers are a 32bit, unsigned quantity. But we never
tell so to the compiler, resulting in the following:

 4ac:   b26187e0        mov     x0, #0xffffffff80000001

We thus rely on the firmware narrowing it for us, which is not
always a reasonable expectation.

Cc: stable@vger.kernel.org
Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Reviewed-by: Robin Murphy <robin.murphy@arm.com>

Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>

Signed-off-by: Mark Rutland <mark.rutland@arm.com> [v4.9 backport]

Tested-by: Greg Hackmann <ghackmann@google.com>

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>

 include/linux/arm-smccc.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)



diff --git a/include/linux/arm-smccc.h b/include/linux/arm-smccc.h
index f2416b58367d..82e1f3ae4010 100644
--- a/include/linux/arm-smccc.h
+++ b/include/linux/arm-smccc.h
@@ -14,14 +14,16 @@ 
 #ifndef __LINUX_ARM_SMCCC_H
 #define __LINUX_ARM_SMCCC_H
+#include <uapi/linux/const.h>
  * This file provides common defines for ARM SMC Calling Convention as
  * specified in
  * http://infocenter.arm.com/help/topic/com.arm.doc.den0028a/index.html
-#define ARM_SMCCC_STD_CALL		0
+#define ARM_SMCCC_STD_CALL	        _AC(0,U)
+#define ARM_SMCCC_FAST_CALL	        _AC(1,U)
 #define ARM_SMCCC_SMC_32		0