arch/arm64/Kbuild disables branch profiling through subdir-ccflags-y. However, arch/arm64/lib/ is built separately through libs-y and does not inherit that flag. Consequently, CONFIG_TRACE_BRANCH_PROFILING can introduce explicit profiling instrumentation into library code, including helpers used while applying alternatives. noinstr does not suppress instrumentation inserted by the branch-profiling macros. Disable branch profiling in arch/arm64/lib/Makefile to extend the existing arm64 policy to this directory Signed-off-by: Jisheng Zhang Assisted-by: LLM --- arch/arm64/lib/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm64/lib/Makefile b/arch/arm64/lib/Makefile index 38ffd359123c..59d714865c00 100644 --- a/arch/arm64/lib/Makefile +++ b/arch/arm64/lib/Makefile @@ -1,5 +1,9 @@ # SPDX-License-Identifier: GPL-2.0 +# Built via libs-y, so the flags in arch/arm64/Kbuild do not reach here. +# Branch profiling isn't noinstr-safe. +ccflags-$(CONFIG_TRACE_BRANCH_PROFILING) += -DDISABLE_BRANCH_PROFILING + # KCSAN uses udelay for introducing watchpoint delay; avoid recursion. KCSAN_SANITIZE_delay.o := n -- 2.55.0