bpf: Disable private stack for x86_64 if stack arguments used

Other architectures like arm64, riscv, etc. have enough register
and for them private stack can be used together with
stack arguments.

Signed-off-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/r/20260513045114.2392291-1-yonghong.song@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
Yonghong Song 2026-05-12 21:51:14 -07:00 committed by Alexei Starovoitov
parent 35b7873316
commit cb6af53140

View File

@ -5163,7 +5163,10 @@ static int check_max_stack_depth_subprog(struct bpf_verifier_env *env, int idx,
}
subprog_depth = round_up_stack_depth(env, subprog[idx].stack_depth);
if (priv_stack_supported) {
if (IS_ENABLED(CONFIG_X86_64) && subprog[idx].stack_arg_cnt) {
/* x86-64 uses R9 for both private stack frame pointer and arg6. */
subprog[idx].priv_stack_mode = NO_PRIV_STACK;
} else if (priv_stack_supported) {
/* Request private stack support only if the subprog stack
* depth is no less than BPF_PRIV_STACK_MIN_SIZE. This is to
* avoid jit penalty if the stack usage is small.