Re: [PATCH RFC bpf-next 4/7] bpf,x86: adjust the "jmp" mode for bpf trampoline
From: Alexei Starovoitov <hidden>
Date: 2025-11-14 18:22:25
Also in:
bpf, lkml
On Fri, Nov 14, 2025 at 1:25 AM Menglong Dong [off-list ref] wrote:
quoted hunk ↗ jump to hunk
In the origin call case, if BPF_TRAMP_F_SKIP_FRAME is not set, it means that the trampoline is not called, but "jmp". Introduce the function bpf_trampoline_need_jmp() to check if the trampoline is in "jmp" mode. Do some adjustment on the "jmp" mode for the x86_64. The main adjustment that we make is for the stack parameter passing case, as the stack alignment logic changes in the "jmp" mode without the "rip". What's more, the location of the parameters on the stack also changes. Signed-off-by: Menglong Dong <redacted> --- arch/x86/net/bpf_jit_comp.c | 15 ++++++++++----- include/linux/bpf.h | 12 ++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-)diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c index 2d300ab37cdd..21ce2b8457ec 100644 --- a/arch/x86/net/bpf_jit_comp.c +++ b/arch/x86/net/bpf_jit_comp.c@@ -2830,7 +2830,7 @@ static int get_nr_used_regs(const struct btf_func_model *m) } static void save_args(const struct btf_func_model *m, u8 **prog, - int stack_size, bool for_call_origin) + int stack_size, bool for_call_origin, bool jmp)
I have an allergy to bool args. Please pass flags and do boll jmp_based_tramp = bpf_trampoline_uses_jmp(flags); I think bpf_trampoline_uses_jmp() is more descriptive than bpf_trampoline_need_jmp(). The actual math lgtm.