From cb28bf923064492756ec7ee6cb24fd0cec375b86 Mon Sep 17 00:00:00 2001 From: Sami Tolvanen Date: Wed, 2 May 2018 09:41:34 -0700 Subject: [PATCH] FROMLIST: arm64: reserve x18 from general allocation with SCS Reserve the x18 register from general allocation when SCS is enabled, because the compiler uses the register to store the current task's shadow stack pointer. Note that all external kernel modules must also be compiled with -ffixed-x18 if the kernel has SCS enabled. Bug: 145210207 Change-Id: I0407d38a0a5ecb6852b3f281d52f6601c565157e (am from https://lore.kernel.org/patchwork/patch/1149058/) Reviewed-by: Nick Desaulniers Reviewed-by: Kees Cook Signed-off-by: Sami Tolvanen --- arch/arm64/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index 2c0238ce0551..ef76101201b2 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -72,6 +72,10 @@ stack_protector_prepare: prepare0 include/generated/asm-offsets.h)) endif +ifeq ($(CONFIG_SHADOW_CALL_STACK), y) +KBUILD_CFLAGS += -ffixed-x18 +endif + ifeq ($(CONFIG_CPU_BIG_ENDIAN), y) KBUILD_CPPFLAGS += -mbig-endian CHECKFLAGS += -D__AARCH64EB__