From: Puranjay Mohan Date: Mon, 8 Jul 2024 11:47:58 +0000 (+0000) Subject: riscv, bpf: Optimize stack usage of trampoline X-Git-Tag: v6.11-rc1~163^2~68^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a5912c37faf723c0812a6a2c9dd18ffbd34a233b;p=thirdparty%2Fkernel%2Flinux.git riscv, bpf: Optimize stack usage of trampoline When BPF_TRAMP_F_CALL_ORIG is not set, stack space for passing arguments on stack doesn't need to be reserved because the original function is not called. Only reserve space for stacked arguments when BPF_TRAMP_F_CALL_ORIG is set. Signed-off-by: Puranjay Mohan Signed-off-by: Daniel Borkmann Acked-by: Pu Lehui Link: https://lore.kernel.org/bpf/20240708114758.64414-1-puranjay@kernel.org --- diff --git a/arch/riscv/net/bpf_jit_comp64.c b/arch/riscv/net/bpf_jit_comp64.c index 685c7389ae7eb..0795efdd35192 100644 --- a/arch/riscv/net/bpf_jit_comp64.c +++ b/arch/riscv/net/bpf_jit_comp64.c @@ -892,7 +892,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, stack_size += 8; sreg_off = stack_size; - if (nr_arg_slots - RV_MAX_REG_ARGS > 0) + if ((flags & BPF_TRAMP_F_CALL_ORIG) && (nr_arg_slots - RV_MAX_REG_ARGS > 0)) stack_size += (nr_arg_slots - RV_MAX_REG_ARGS) * 8; stack_size = round_up(stack_size, STACK_ALIGN);