v2: https://lore.kernel.org/bpf/20230215235931.380197-1-iii@xxxxxxxxxxxxx/ v2 -> v3: Drop BPF_HELPER_CALL (Alexei). Drop the merged check_subprogs() cleanup. Adjust arm, sparc and i386 JITs. Fix a few portability issues in test_verifier. Fix a few sparc64 issues. Trim s390x denylist. v1: https://lore.kernel.org/bpf/20230214212809.242632-1-iii@xxxxxxxxxxxxx/T/#t v1 -> v2: Add BPF_HELPER_CALL (Stanislav). Add check_subprogs() cleanup - noticed while reviewing the code for BPF_HELPER_CALL. Drop WARN_ON_ONCE (Stanislav, Alexei). Add bpf_jit_get_func_addr() to x86_64 JIT. Hi, This series solves the problems outlined in [1, 2, 3]. The main problem is that kfuncs in modules do not fit into bpf_insn.imm on s390x; the secondary problem is that there is a conflict between "abstract" XDP metadata function BTF ids and their "concrete" addresses. The solution is to keep fkunc BTF ids in bpf_insn.imm, and put the addresses into bpf_kfunc_desc, which does not have size restrictions. Regtested with test_verifier and test_progs on x86_64 and s390x. Regtested with test_verifier only on arm, sparc64 and i386. [1] https://lore.kernel.org/bpf/Y9%2FyrKZkBK6yzXp+@krava/ [2] https://lore.kernel.org/bpf/20230128000650.1516334-1-iii@xxxxxxxxxxxxx/ [3] https://lore.kernel.org/bpf/20230128000650.1516334-32-iii@xxxxxxxxxxxxx/ Best regards, Ilya Ilya Leoshkevich (12): selftests/bpf: Finish folding after BPF_FUNC_csum_diff selftests/bpf: Fix test_verifier on 32-bit systems sparc: Update maximum errno bpf: sparc64: Emit fixed-length instructions for BPF_PSEUDO_FUNC bpf: sparc64: Fix jumping to the first insn bpf: sparc64: Use 32-bit tail call index bpf, arm: Use bpf_jit_get_func_addr() bpf: sparc64: Use bpf_jit_get_func_addr() bpf: x86: Use bpf_jit_get_func_addr() bpf, x86_32: Use bpf_jit_get_func_addr() bpf: Support 64-bit pointers to kfuncs selftests/bpf: Trim DENYLIST.s390x arch/arm/net/bpf_jit_32.c | 27 +++++-- arch/sparc/include/asm/errno.h | 10 +++ arch/sparc/kernel/entry.S | 2 +- arch/sparc/kernel/process.c | 6 +- arch/sparc/kernel/syscalls.S | 2 +- arch/sparc/net/bpf_jit_comp_64.c | 50 +++++++----- arch/x86/net/bpf_jit_comp.c | 15 +++- arch/x86/net/bpf_jit_comp32.c | 27 +++++-- include/linux/bpf.h | 2 + kernel/bpf/core.c | 21 ++++- kernel/bpf/verifier.c | 79 ++++++------------- tools/testing/selftests/bpf/DENYLIST.s390x | 20 ----- tools/testing/selftests/bpf/test_verifier.c | 5 ++ .../selftests/bpf/verifier/array_access.c | 10 ++- .../selftests/bpf/verifier/atomic_fetch_add.c | 2 +- .../selftests/bpf/verifier/bpf_get_stack.c | 2 +- tools/testing/selftests/bpf/verifier/calls.c | 4 +- .../testing/selftests/bpf/verifier/map_kptr.c | 2 +- .../testing/selftests/bpf/verifier/map_ptr.c | 2 +- 19 files changed, 164 insertions(+), 124 deletions(-) create mode 100644 arch/sparc/include/asm/errno.h -- 2.39.1