Re: [PATCH bpf-next 03/10] bpf: Support stack arguments for bpf functions

Yonghong Song
2026-04-06T06:03:42Z

On 4/5/26 9:51 PM, Alexei Starovoitov wrote:
> On Sun, Apr 5, 2026 at 9:29 PM Yonghong Song <yonghong.song@linux.dev> wrote:
>>
>>> For 6th argument JIT emits these two stx/ldx as moves to/from x86's r9.
>> For stx case, we should move the bottom stack value (6th argument)
>> to r9 and pop the bottom stack slot (8 bytes).
> That doesn't sound right.
> Passing 6th argument should not involve stack manipulation at all.
> No push and no pop.

The following stack layout can avoid the above push/pop issue:

incoming stack arg N -> 1
return adderss
saved rbp
BPF program stack
tail call cnt <== if tail call reachable
callee-saved regs
r9 <== if priv_frame_ptr is not null
outgoing stack arg 1
outgoing stack arg M -> 2

After the above pushing (outgoing stack arg M -> 2),
if bpf-to-bpf, push the outgoing stack arg 1.
If kfunc, move outgoing stack arg 1 to r9.