Skip to content
  • Xi Wang's avatar
    arm64: bpf: fix out-of-bounds read in bpf2a64_offset() · 8eee539d
    Xi Wang authored
    Problems occur when bpf_to or bpf_from has value prog->len - 1 (e.g.,
    "Very long jump backwards" in test_bpf where the last instruction is a
    jump): since ctx->offset has length prog->len, ctx->offset[bpf_to + 1]
    or ctx->offset[bpf_from + 1] will cause an out-of-bounds read, leading
    to a bogus jump offset and kernel panic.
    
    This patch moves updating ctx->offset to after calling build_insn(),
    and changes indexing to use bpf_to and bpf_from without + 1.
    
    Fixes: e54bcde3
    
     ("arm64: eBPF JIT compiler")
    Cc: <stable@vger.kernel.org> # 3.18+
    Cc: Zi Shen Lim <zlim.lnx@gmail.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Acked-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
    Signed-off-by: default avatarXi Wang <xi.wang@gmail.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    8eee539d