]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
riscv: Require clang-17 or newer for kCFI
authorNathan Chancellor <nathan@kernel.org>
Thu, 12 Jun 2025 19:57:01 +0000 (12:57 -0700)
committerAlexandre Ghiti <alexghiti@rivosinc.com>
Mon, 30 Jun 2025 06:58:11 +0000 (06:58 +0000)
After the combination of commit c217157bcd1d ("riscv: Implement
HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS"), which starts using
'-fpatchable-function-entry=M,N', and commit d0262e907e29 ("riscv:
ftrace: support PREEMPT"), which allows CONFIG_DYNAMIC_FTRACE to be
enabled by allmodconfig, allmodconfig builds with clang-16 begin
crashing in the generic LLVM kCFI pass (see [1] for the stack trace).

clang-17 avoids this crash by moving to target-specific lowering of the
kCFI operand bundles [2]. Require clang-17 to select CONFIG_CFI_CLANG to
avoid this crash.

Fixes: c217157bcd1d ("riscv: Implement HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS")
Link: https://godbolt.org/z/xG39Pn16o
Link: https://github.com/llvm/llvm-project/commit/62fa708ceb027713b386c7e0efda994f8bdc27e2
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Sami Tolvanen <samitolvanen@google.com>
Link: https://lore.kernel.org/r/20250612-riscv-require-clang-17-for-kcfi-v1-1-216f7cd7d87f@kernel.org
Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
arch/riscv/Kconfig

index 36061f4732b7496a9c68a9a10f9959849dc2a95c..d71ea0f4466fc3eefd1bd89f37637193d9a464da 100644 (file)
@@ -63,7 +63,8 @@ config RISCV
        select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
        select ARCH_STACKWALK
        select ARCH_SUPPORTS_ATOMIC_RMW
-       select ARCH_SUPPORTS_CFI_CLANG
+       # clang >= 17: https://github.com/llvm/llvm-project/commit/62fa708ceb027713b386c7e0efda994f8bdc27e2
+       select ARCH_SUPPORTS_CFI_CLANG if CLANG_VERSION >= 170000
        select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU
        select ARCH_SUPPORTS_HUGE_PFNMAP if TRANSPARENT_HUGEPAGE
        select ARCH_SUPPORTS_HUGETLBFS if MMU