mirror of https://github.com/torvalds/linux.git
compiler_types: Introduce __nocfi_generic
There are two different ways that LLVM can expand kCFI operand bundles in LLVM IR: generically in the middle end or using an architecture specific sequence when lowering LLVM IR to machine code in the backend. The generic pass allows any architecture to take advantage of kCFI but the expansion of these bundles in the middle end can mess with optimizations that may turn indirect calls into direct calls when the call target is known at compile time, such as after inlining. Add __nocfi_generic, dependent on an architecture selecting CONFIG_ARCH_USES_CFI_GENERIC_LLVM_PASS, to disable kCFI bundle generation in functions where only the generic kCFI pass may cause problems. Link: https://github.com/ClangBuiltLinux/linux/issues/2124 Signed-off-by: Nathan Chancellor <nathan@kernel.org> Link: https://patch.msgid.link/20251025-idpf-fix-arm-kcfi-build-error-v1-1-ec57221153ae@kernel.org Signed-off-by: Kees Cook <kees@kernel.org>
This commit is contained in:
parent
211ddde082
commit
39c89ee6e9
|
|
@ -917,6 +917,13 @@ config ARCH_USES_CFI_TRAPS
|
|||
An architecture should select this option if it requires the
|
||||
.kcfi_traps section for KCFI trap handling.
|
||||
|
||||
config ARCH_USES_CFI_GENERIC_LLVM_PASS
|
||||
bool
|
||||
help
|
||||
An architecture should select this option if it uses the generic
|
||||
KCFIPass in LLVM to expand kCFI bundles instead of architecture-specific
|
||||
lowering.
|
||||
|
||||
config CFI
|
||||
bool "Use Kernel Control Flow Integrity (kCFI)"
|
||||
default CFI_CLANG
|
||||
|
|
|
|||
|
|
@ -461,6 +461,12 @@ struct ftrace_likely_data {
|
|||
# define __nocfi
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ARCH_USES_CFI_GENERIC_LLVM_PASS)
|
||||
# define __nocfi_generic __nocfi
|
||||
#else
|
||||
# define __nocfi_generic
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Any place that could be marked with the "alloc_size" attribute is also
|
||||
* a place to be marked with the "malloc" attribute, except those that may
|
||||
|
|
|
|||
Loading…
Reference in New Issue