From 0dd64a860c2dde3fc3321bb6abaae2939ff2c819 Mon Sep 17 00:00:00 2001 From: Haibo Li Date: Mon, 4 Jul 2022 09:40:45 +0800 Subject: [PATCH] FROMLIST: cfi: enable sanitize for cfi.c currenly,cfi.c is excluded from cfi sanitize because of cfi handler. The side effect is that we can not transfer function pointer to other files which enable cfi sanitize. Enable cfi sanitize for cfi.c and bypass cfi check for __cfi_slowpath_diag Change-Id: Id026c6becf074eb828e4b3d642ab791d6cedf82c Signed-off-by: Haibo Li Signed-off-by: Lecopzer Chen Link: https://lore.kernel.org/lkml/20220704014046.34596-2-haibo.li@mediatek.com/ Bug: 236922027 Bug: 257362811 [ Sami: Fixed ABI changes ] Signed-off-by: Sami Tolvanen --- kernel/Makefile | 3 --- kernel/cfi.c | 7 ++++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/kernel/Makefile b/kernel/Makefile index d50fd85b9abb..3946218ab2f6 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -41,9 +41,6 @@ KCSAN_SANITIZE_kcov.o := n UBSAN_SANITIZE_kcov.o := n CFLAGS_kcov.o := $(call cc-option, -fno-conserve-stack) -fno-stack-protector -# Don't instrument error handlers -CFLAGS_REMOVE_cfi.o := $(CC_FLAGS_CFI) - obj-y += sched/ obj-y += locking/ obj-y += power/ diff --git a/kernel/cfi.c b/kernel/cfi.c index 08102d19ec15..b9c361b164f9 100644 --- a/kernel/cfi.c +++ b/kernel/cfi.c @@ -311,7 +311,7 @@ static inline cfi_check_fn find_check_fn(unsigned long ptr) return fn; } -void __cfi_slowpath_diag(uint64_t id, void *ptr, void *diag) +static inline void __nocfi ___cfi_slowpath_diag(uint64_t id, void *ptr, void *diag) { cfi_check_fn fn = find_check_fn((unsigned long)ptr); @@ -320,6 +320,11 @@ void __cfi_slowpath_diag(uint64_t id, void *ptr, void *diag) else /* Don't allow unchecked modules */ handle_cfi_failure(ptr); } + +void __cfi_slowpath_diag(uint64_t id, void *ptr, void *diag) +{ + ___cfi_slowpath_diag(id, ptr, diag); +} EXPORT_SYMBOL(__cfi_slowpath_diag); #else /* !CONFIG_MODULES */