summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChenghao Duan <duanchenghao@kylinos.cn>2025-12-31 10:19:20 +0300
committerHuacai Chen <chenhuacai@loongson.cn>2025-12-31 10:19:20 +0300
commitd314e1f48260cef3f869e3edc02a02c8a48b08e1 (patch)
tree9b649b9fa10717d8b36d4d0ead364ad69a6605aa
parenteb71f5c433e1c6dff089b315881dec40a88a7baf (diff)
downloadlinux-d314e1f48260cef3f869e3edc02a02c8a48b08e1.tar.xz
LoongArch: BPF: Save return address register ra to t0 before trampoline
Modify the build_prologue() function to ensure the return address register ra is saved to t0 before entering trampoline operations. This change ensures the accurate return address handling when a BPF program calls another BPF program, preventing errors in the BPF-to-BPF call chain. Cc: stable@vger.kernel.org Fixes: 677e6123e3d2 ("LoongArch: BPF: Disable trampoline for kernel module function trace") Signed-off-by: Chenghao Duan <duanchenghao@kylinos.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
-rw-r--r--arch/loongarch/net/bpf_jit.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/loongarch/net/bpf_jit.c b/arch/loongarch/net/bpf_jit.c
index 766ded335fd8..9729c0ff7bfc 100644
--- a/arch/loongarch/net/bpf_jit.c
+++ b/arch/loongarch/net/bpf_jit.c
@@ -139,6 +139,7 @@ static void build_prologue(struct jit_ctx *ctx)
stack_adjust = round_up(stack_adjust, 16);
stack_adjust += bpf_stack_adjust;
+ move_reg(ctx, LOONGARCH_GPR_T0, LOONGARCH_GPR_RA);
/* Reserve space for the move_imm + jirl instruction */
for (i = 0; i < LOONGARCH_LONG_JUMP_NINSNS; i++)
emit_insn(ctx, nop);