From 02da62c2f89668fa1adafa3cc806025b560e45ce Mon Sep 17 00:00:00 2001 From: Alexei Starovoitov Date: Wed, 21 Oct 2026 22:08:44 +0000 Subject: [PATCH] bpf, x86: Use emit_rsb_call() to call bpf_unwind_target() clang inlines emit_unwind_ret_addr() and emit_patch() into do_jit() and folds 'bpf_unwind_target - X86_PATCH_SIZE' into one relocation. It points to a nop in the padding in front of the function, and objtool complains: vmlinux.o: warning: objtool: do_jit+0x1330: relocation to !ENDBR: .text+0xc7fab It's only used to compute rel32 of a direct call, so nothing is wrong at run time. emit_rsb_call() does call depth accounting too and hides func from the optimizer. Use it instead of open coding. Fixes: cff94a3d78d8 ("bpf, x86: Support unwind_goto and unwind_exit") Reported-by: Nathan Chancellor Signed-off-by: Alexei Starovoitov Tested-by: Nathan Chancellor # build Link: https://patch.msgid.link/20261021220844.239400-1-alexei.starovoitov@gmail.com Closes: https://lore.kernel.org/bpf/20261021201456.GA3197963@ax162/ --- arch/x86/net/bpf_jit_comp.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c index 6a2fe3d0039d..71f7200dba00 100644 --- a/arch/x86/net/bpf_jit_comp.c +++ b/arch/x86/net/bpf_jit_comp.c @@ -2564,9 +2564,7 @@ static int emit_unwind_ret_addr(u8 **pprog, u8 *ip) EMIT2(0x50, 0x56); /* push rax; push rsi */ EMIT4(0x48, 0x8B, 0x7D, 0x08); /* mov rdi, [rbp + 8] */ - ip += prog - start; - ip += x86_call_depth_emit_accounting(&prog, bpf_unwind_target, ip); - if (emit_call(&prog, bpf_unwind_target, ip)) + if (emit_rsb_call(&prog, bpf_unwind_target, ip + (prog - start))) return -EINVAL; EMIT4(0x48, 0x89, 0x45, 0x08); /* mov [rbp + 8], rax */ EMIT2(0x5E, 0x58); /* pop rsi; pop rax */