]> git.baikalelectronics.ru Git - kernel.git/commit
bpf, ppc64: generalize fetching subprog into bpf_jit_get_func_addr
authorDaniel Borkmann <daniel@iogearbox.net>
Mon, 26 Nov 2018 13:05:38 +0000 (14:05 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 27 Nov 2018 01:34:24 +0000 (17:34 -0800)
commit931b2d5aa4204b207a8ba5fabf7518d990589800
tree8fb9a3cc00ef0b47edb7428d297bc921b39e1f2f
parentf516d3bf145ce0a2ba7cfe6982704a7c0c094477
bpf, ppc64: generalize fetching subprog into bpf_jit_get_func_addr

Make fetching of the BPF call address from ppc64 JIT generic. ppc64
was using a slightly different variant rather than through the insns'
imm field encoding as the target address would not fit into that space.
Therefore, the target subprog number was encoded into the insns' offset
and fetched through fp->aux->func[off]->bpf_func instead. Given there
are other JITs with this issue and the mechanism of fetching the address
is JIT-generic, move it into the core as a helper instead. On the JIT
side, we get information on whether the retrieved address is a fixed
one, that is, not changing through JIT passes, or a dynamic one. For
the former, JITs can optimize their imm emission because this doesn't
change jump offsets throughout JIT process.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Sandipan Das <sandipan@linux.ibm.com>
Tested-by: Sandipan Das <sandipan@linux.ibm.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
arch/powerpc/net/bpf_jit_comp64.c
include/linux/filter.h
kernel/bpf/core.c