From 2c0cdded94e00bf228b42e3475eb1b17c6b366e5 Mon Sep 17 00:00:00 2001 From: Sami Tolvanen Date: Thu, 10 Sep 2020 15:33:56 -0700 Subject: [PATCH] ANDROID: mm: add generic __va_function and __pa_function We use non-canonical CFI jump tables with CONFIG_CFI_CLANG, which means the compiler replaces function address references with the address of the function's CFI jump table entry. This results in __pa_symbol(function), for example, returning the physical address of the jump table entry, which can lead to address space confusion since the jump table itself points to a virtual address. This change adds generic definitions for __pa/va_function, which architectures that support CFI can override. Bug: 166220312 Change-Id: If4a162de7854547d8437bf59be03eb6d16220832 Signed-off-by: Sami Tolvanen Git-commit: d509371db88a829fa13fbb066423b20fc4698845 Git-repo: https://android.googlesource.com/kernel/common/ Signed-off-by: Prasad Sodagudi --- include/linux/mm.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 6e49aeb26dbc..8300807e7c7e 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -116,6 +116,14 @@ extern int mmap_rnd_compat_bits __read_mostly; #define __pa_symbol(x) __pa(RELOC_HIDE((unsigned long)(x), 0)) #endif +#ifndef __va_function +#define __va_function(x) (x) +#endif + +#ifndef __pa_function +#define __pa_function(x) __pa_symbol(x) +#endif + #ifndef page_to_virt #define page_to_virt(x) __va(PFN_PHYS(page_to_pfn(x))) #endif