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)
committerSami Tolvanen <samitolvanen@google.com>
Thu, 26 Apr 2018 23:03:37 +0000 (16:03 -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 345d4e52119104eac1b65fbcf62cf114a87dc0cf..332313a33ba80ec90c25a5d6a28cc81c0c802b9b 100644 (file)
@@ -842,7 +842,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;