bpf/arm64: Fix BPF_ST into arena memory
authorPuranjay Mohan <puranjay@kernel.org>
Thu, 30 Oct 2025 12:17:14 +0000 (12:17 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 31 Oct 2025 18:20:53 +0000 (11:20 -0700)
commitbe708ed300e1ebd32978b4092b909f0d9be0958f
treee24714cf4ae07f7c883b6e031b1ada8ba69043e3
parent14a7f2392f42bbb71c1a5ea68930006221fcd80a
bpf/arm64: Fix BPF_ST into arena memory

The arm64 JIT supports BPF_ST with BPF_PROBE_MEM32 (arena) by using the
tmp2 register to hold the dst + arena_vm_base value and using tmp2 as the
new dst register. But this is broken because in case is_lsi_offset()
returns false the tmp2 will be clobbered by emit_a64_mov_i(1, tmp2, off,
ctx); and hence the emitted store instruction will be of the form:
strb    w10, [x11, x11]
Fix this by using the third temporary register to hold the dst +
arena_vm_base.

Fixes: 339af577ec05 ("bpf: Add arm64 JIT support for PROBE_MEM32 pseudo instructions.")
Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
Link: https://lore.kernel.org/r/20251030121715.55214-1-puranjay@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
arch/arm64/net/bpf_jit_comp.c