• Puranjay Mohan's avatar
    bpf: Add arm64 JIT support for PROBE_MEM32 pseudo instructions. · 339af577
    Puranjay Mohan authored
    Add support for [LDX | STX | ST], PROBE_MEM32, [B | H | W | DW]
    instructions.  They are similar to PROBE_MEM instructions with the
    following differences:
    - PROBE_MEM32 supports store.
    - PROBE_MEM32 relies on the verifier to clear upper 32-bit of the
      src/dst register
    - PROBE_MEM32 adds 64-bit kern_vm_start address (which is stored in R28
      in the prologue). Due to bpf_arena constructions such R28 + reg +
      off16 access is guaranteed to be within arena virtual range, so no
      address check at run-time.
    - PROBE_MEM32 allows STX and ST. If they fault the store is a nop. When
      LDX faults the destination register is zeroed.
    
    To support these on arm64, we do tmp2 = R28 + src/dst reg and then use
    tmp2 as the new src/dst register. This allows us to reuse most of the
    code for normal [LDX | STX | ST].
    Signed-off-by: default avatarPuranjay Mohan <puranjay12@gmail.com>
    Link: https://lore.kernel.org/r/20240325150716.4387-2-puranjay12@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    339af577
bpf_jit_comp.c 67.2 KB