bpf, x64: Add predicate for bpf2bpf with tailcalls support in JIT
authorTony Ambardar <tony.ambardar@gmail.com>
Fri, 17 Jun 2022 10:57:34 +0000 (12:57 +0200)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 21 Jun 2022 16:52:04 +0000 (18:52 +0200)
commit95acd8817e66d031d2e6ee7def3f1e1874819317
treef42808f3e806be15132e6978a1f2501eef59372b
parentb40b414ec8d971be0b2f6485c3a039b0fa7f078c
bpf, x64: Add predicate for bpf2bpf with tailcalls support in JIT

The BPF core/verifier is hard-coded to permit mixing bpf2bpf and tail
calls for only x86-64. Change the logic to instead rely on a new weak
function 'bool bpf_jit_supports_subprog_tailcalls(void)', which a capable
JIT backend can override.

Update the x86-64 eBPF JIT to reflect this.

Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
[jakub: drop MIPS bits and tweak patch subject]
Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20220617105735.733938-2-jakub@cloudflare.com
arch/x86/net/bpf_jit_comp.c
include/linux/filter.h
kernel/bpf/core.c
kernel/bpf/verifier.c