From 4c81c26cdc84f40f77e1fe717268f7756d33860c Mon Sep 17 00:00:00 2001 From: Sami Tolvanen Date: Fri, 16 Aug 2019 11:32:43 -0700 Subject: [PATCH] ANDROID: arm64: add __nocfi to __apply_alternatives __apply_alternatives makes indirect calls to functions whose address is taken in assembly code using the alternative_cb macro. With CFI enabled using non-canonical jump tables, the compiler isn't able to replace the function reference with the jump table reference, which trips CFI. Bug: 145210207 Change-Id: I2361b601d987cd25f88aa0b9f37b400ff566febc Signed-off-by: Sami Tolvanen --- arch/arm64/kernel/alternative.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kernel/alternative.c b/arch/arm64/kernel/alternative.c index 73039949b5ce..a50fb1d332e1 100644 --- a/arch/arm64/kernel/alternative.c +++ b/arch/arm64/kernel/alternative.c @@ -132,8 +132,8 @@ static void clean_dcache_range_nopatch(u64 start, u64 end) } while (cur += d_size, cur < end); } -static void __apply_alternatives(void *alt_region, bool is_module, - unsigned long *feature_mask) +static void __nocfi __apply_alternatives(void *alt_region, bool is_module, + unsigned long *feature_mask) { struct alt_instr *alt; struct alt_region *region = alt_region;