ANDROID: arm64: mark kpti_install_ng_mappings as __nocfi
authorGreg Hackmann <ghackmann@google.com>
Mon, 9 Apr 2018 20:48:49 +0000 (13:48 -0700)
committerGreg Hackmann <ghackmann@google.com>
Mon, 9 Apr 2018 21:25:12 +0000 (14:25 -0700)
4.9.93 panics on boot when CFI_CLANG and UNMAP_KERNEL_AT_EL0 are both
enabled.  From Sami Tolvanen:

"kpti_install_ng_mappings makes an indirect call to a physical address,
which trips CFI. Adding the __nocfi attribute to this function should
fix the problem."

Bug: 77811249
Change-Id: I87d1ceb29f1ba2caee8954547596f4236bdfc31f
Reported-by: Jean-Baptiste Theou <jb@essential.com>
Signed-off-by: Greg Hackmann <ghackmann@google.com>
arch/arm64/kernel/cpufeature.c

index 785a54e..08344c9 100644 (file)
@@ -791,7 +791,7 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,
                                                     ID_AA64PFR0_CSV3_SHIFT);
 }
 
-static int kpti_install_ng_mappings(void *__unused)
+static int __nocfi kpti_install_ng_mappings(void *__unused)
 {
        typedef void (kpti_remap_fn)(int, int, phys_addr_t);
        extern kpti_remap_fn idmap_kpti_install_ng_mappings;