is_endbr() is called in __ftrace_return_to_handler -> fprobe_return -> kprobe_multi_link_exit_handler -> is_endbr. It is not protected by the "bpf_prog_active", so it can't be traced by kprobe-multi, which can cause recurring and panic the kernel. Fix it by make it notrace. Fixes: 72e213a7ccf9 ("x86/ibt: Clean up is_endbr()") Signed-off-by: Menglong Dong --- arch/x86/kernel/alternative.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index 69fb818df2ee..f67a31c77c89 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -1108,7 +1108,7 @@ void __init_or_module noinline apply_returns(s32 *start, s32 *end) { } #ifdef CONFIG_X86_KERNEL_IBT -__noendbr bool is_endbr(u32 *val) +__noendbr notrace bool is_endbr(u32 *val) { u32 endbr; -- 2.51.0