summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorXu Kuohai <xukuohai@huawei.com>2024-04-16 14:42:08 +0800
committerDaniel Borkmann <daniel@iogearbox.net>2024-04-16 17:19:41 +0200
commit10541b374aa05c8118cc6a529a615882e53f261b (patch)
tree59373141f5538e6004c743c0a6c0493ce6b7ca79 /arch
parentdc7d7447b56bcc9cf79a9c22e4edad200a298e4c (diff)
downloadlinux-stable-10541b374aa05c8118cc6a529a615882e53f261b.tar.gz
linux-stable-10541b374aa05c8118cc6a529a615882e53f261b.tar.bz2
linux-stable-10541b374aa05c8118cc6a529a615882e53f261b.zip
riscv, bpf: Fix incorrect runtime stats
When __bpf_prog_enter() returns zero, the s1 register is not set to zero, resulting in incorrect runtime stats. Fix it by setting s1 immediately upon the return of __bpf_prog_enter(). Fixes: 49b5e77ae3e2 ("riscv, bpf: Add bpf trampoline support for RV64") Signed-off-by: Xu Kuohai <xukuohai@huawei.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Reviewed-by: Pu Lehui <pulehui@huawei.com> Acked-by: Björn Töpel <bjorn@kernel.org> Link: https://lore.kernel.org/bpf/20240416064208.2919073-3-xukuohai@huaweicloud.com
Diffstat (limited to 'arch')
-rw-r--r--arch/riscv/net/bpf_jit_comp64.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/riscv/net/bpf_jit_comp64.c b/arch/riscv/net/bpf_jit_comp64.c
index 1adf2f39ce59..ec9d692838fc 100644
--- a/arch/riscv/net/bpf_jit_comp64.c
+++ b/arch/riscv/net/bpf_jit_comp64.c
@@ -722,6 +722,9 @@ static int invoke_bpf_prog(struct bpf_tramp_link *l, int args_off, int retval_of
if (ret)
return ret;
+ /* store prog start time */
+ emit_mv(RV_REG_S1, RV_REG_A0, ctx);
+
/* if (__bpf_prog_enter(prog) == 0)
* goto skip_exec_of_prog;
*/
@@ -729,9 +732,6 @@ static int invoke_bpf_prog(struct bpf_tramp_link *l, int args_off, int retval_of
/* nop reserved for conditional jump */
emit(rv_nop(), ctx);
- /* store prog start time */
- emit_mv(RV_REG_S1, RV_REG_A0, ctx);
-
/* arg1: &args_off */
emit_addi(RV_REG_A0, RV_REG_FP, -args_off, ctx);
if (!p->jited)