]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bpf: arm64: Add support for instructions array
authorPuranjay Mohan <puranjay@kernel.org>
Mon, 17 Nov 2025 13:07:29 +0000 (13:07 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Sat, 22 Nov 2025 00:40:21 +0000 (16:40 -0800)
Add support for the instructions array map type in the arm64 JIT by
calling bpf_prog_update_insn_ptrs() with the offsets that map
xlated_offset to the jited_offset in the final image. arm64 JIT already
has this offset array which was being used for
bpf_prog_fill_jited_linfo() and can be used directly for
bpf_prog_update_insn_ptrs.

Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
Reviewed-by: Anton Protopopov <a.s.protopopov@gmail.com>
Acked-by: Xu Kuohai <xukuohai@huawei.com>
Link: https://lore.kernel.org/r/20251117130732.11107-2-puranjay@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
arch/arm64/net/bpf_jit_comp.c

index 0c9a50a1e73e7dc12f4e18377f449d9ef918996b..4a2afc0cefc42aef6427ff3a5446700b396cd79b 100644 (file)
@@ -2231,6 +2231,13 @@ skip_init_ctx:
                for (i = 0; i <= prog->len; i++)
                        ctx.offset[i] *= AARCH64_INSN_SIZE;
                bpf_prog_fill_jited_linfo(prog, ctx.offset + 1);
+               /*
+                * The bpf_prog_update_insn_ptrs function expects offsets to
+                * point to the first byte of the jitted instruction (unlike
+                * the bpf_prog_fill_jited_linfo above, which, for historical
+                * reasons, expects to point to the next instruction)
+                */
+               bpf_prog_update_insn_ptrs(prog, ctx.offset, ctx.ro_image);
 out_off:
                if (!ro_header && priv_stack_ptr) {
                        free_percpu(priv_stack_ptr);