Hi David, hi Jakub, The following pull-request contains BPF updates for your *net-next* tree. We've added 43 non-merge commits during the last 11 day(s) which contain a total of 74 files changed, 3717 insertions(+), 578 deletions(-). The main changes are: 1) syscall program type, fd array, and light skeleton, from Alexei. 2) Stop emitting static variables in skeleton, from Andrii. 3) Low level tc-bpf api, from Kumar. 4) Reduce verifier kmalloc/kfree churn, from Lorenz. Please consider pulling these changes from: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git Thanks a lot! Also thanks to reporters, reviewers and testers of commits in this pull-request: Andrii Nakryiko, Edward Cree, John Fastabend, Song Liu, Toke Høiland-Jørgensen, Willem de Bruijn, Yonghong Song ---------------------------------------------------------------- The following changes since commit b741596468b010af2846b75f5e75a842ce344a6e: Merge tag 'riscv-for-linus-5.13-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux (2021-05-08 11:52:37 -0700) are available in the Git repository at: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git for you to fetch changes up to 3a2daa7248647c0e5e165140553f9af5006e93a2: bpf: Make some symbols static (2021-05-19 10:47:43 -0700) ---------------------------------------------------------------- Alexei Starovoitov (23): Merge branch 'Reduce kmalloc / kfree churn in the verifier' bpf: Introduce bpf_sys_bpf() helper and program type. bpf: Introduce bpfptr_t user/kernel pointer. bpf: Prepare bpf syscall to be used from kernel and user space. libbpf: Support for syscall program type selftests/bpf: Test for syscall program type bpf: Make btf_load command to be bpfptr_t compatible. selftests/bpf: Test for btf_load command. bpf: Introduce fd_idx bpf: Add bpf_btf_find_by_name_kind() helper. bpf: Add bpf_sys_close() helper. libbpf: Change the order of data and text relocations. libbpf: Add bpf_object pointer to kernel_supports(). libbpf: Preliminary support for fd_idx libbpf: Generate loader program out of BPF ELF file. libbpf: Cleanup temp FDs when intermediate sys_bpf fails. libbpf: Introduce bpf_map__initial_value(). bpftool: Use syscall/loader program in "prog load" and "gen skeleton" command. selftests/bpf: Convert few tests to light skeleton. selftests/bpf: Convert atomics test to light skeleton. selftests/bpf: Convert test printk to use rodata. selftests/bpf: Convert test trace_printk to lskel. bpf: Add cmd alias BPF_PROG_RUN Andrii Nakryiko (9): bpftool: Strip const/volatile/restrict modifiers from .bss and .data vars libbpf: Add per-file linker opts selftests/bpf: Stop using static variables for passing data to/from user-space bpftool: Stop emitting static variables in BPF skeleton libbpf: Fix ELF symbol visibility update logic libbpf: Treat STV_INTERNAL same as STV_HIDDEN for functions selftests/bpf: Validate skeleton gen handles skipped fields libbpf: Reject static maps libbpf: Reject static entry-point BPF programs Cong Wang (1): skmsg: Remove unused parameters of sk_msg_wait_data() Daniel Borkmann (1): Merge branch 'bpf-loader-progs' Dongseok Yi (1): bpf: Check for BPF_F_ADJ_ROOM_FIXED_GSO when bpf_skb_change_proto Hailong Liu (1): samples, bpf: Suppress compiler warning Kumar Kartikeya Dwivedi (3): libbpf: Add various netlink helpers libbpf: Add low level TC-BPF management API libbpf: Add selftests for TC-BPF management API Lorenz Bauer (3): bpf: verifier: Improve function state reallocation bpf: verifier: Use copy_array for jmp_history bpf: verifier: Allocate idmap scratch in verifier env Pu Lehui (1): bpf: Make some symbols static Tiezhu Yang (2): bpf, arm64: Replace STACK_ALIGN() with round_up() to align stack size bpf, arm64: Remove redundant switch case about BPF_DIV and BPF_MOD arch/arm64/net/bpf_jit_comp.c | 19 +- include/linux/bpf.h | 19 +- include/linux/bpf_types.h | 2 + include/linux/bpf_verifier.h | 9 + include/linux/bpfptr.h | 75 +++ include/linux/btf.h | 2 +- include/linux/skmsg.h | 3 +- include/uapi/linux/bpf.h | 39 +- kernel/bpf/bpf_iter.c | 13 +- kernel/bpf/btf.c | 70 +- kernel/bpf/syscall.c | 194 ++++-- kernel/bpf/verifier.c | 345 +++++----- net/bpf/test_run.c | 45 +- net/core/filter.c | 22 +- net/core/skmsg.c | 3 +- net/ipv4/tcp_bpf.c | 9 +- net/ipv4/udp_bpf.c | 8 +- samples/bpf/task_fd_query_user.c | 2 +- tools/bpf/bpftool/Makefile | 2 +- tools/bpf/bpftool/gen.c | 394 ++++++++++- tools/bpf/bpftool/main.c | 7 +- tools/bpf/bpftool/main.h | 1 + tools/bpf/bpftool/prog.c | 107 ++- tools/bpf/bpftool/xlated_dumper.c | 3 + tools/include/uapi/linux/bpf.h | 39 +- tools/lib/bpf/Build | 2 +- tools/lib/bpf/bpf_gen_internal.h | 41 ++ tools/lib/bpf/gen_loader.c | 729 +++++++++++++++++++++ tools/lib/bpf/libbpf.c | 427 +++++++++--- tools/lib/bpf/libbpf.h | 67 +- tools/lib/bpf/libbpf.map | 7 + tools/lib/bpf/libbpf_internal.h | 2 + tools/lib/bpf/linker.c | 18 +- tools/lib/bpf/netlink.c | 568 +++++++++++++--- tools/lib/bpf/nlattr.h | 48 ++ tools/lib/bpf/skel_internal.h | 123 ++++ tools/testing/selftests/bpf/.gitignore | 1 + tools/testing/selftests/bpf/Makefile | 16 +- tools/testing/selftests/bpf/prog_tests/atomics.c | 72 +- .../selftests/bpf/prog_tests/fentry_fexit.c | 6 +- .../testing/selftests/bpf/prog_tests/fentry_test.c | 10 +- .../testing/selftests/bpf/prog_tests/fexit_sleep.c | 6 +- .../testing/selftests/bpf/prog_tests/fexit_test.c | 10 +- .../testing/selftests/bpf/prog_tests/kfunc_call.c | 6 +- .../selftests/bpf/prog_tests/ksyms_module.c | 2 +- tools/testing/selftests/bpf/prog_tests/ringbuf.c | 8 +- .../testing/selftests/bpf/prog_tests/send_signal.c | 2 +- tools/testing/selftests/bpf/prog_tests/skeleton.c | 6 +- .../selftests/bpf/prog_tests/static_linked.c | 9 +- tools/testing/selftests/bpf/prog_tests/syscall.c | 55 ++ tools/testing/selftests/bpf/prog_tests/tc_bpf.c | 395 +++++++++++ .../selftests/bpf/prog_tests/trace_printk.c | 5 +- .../selftests/bpf/progs/bpf_iter_test_kern4.c | 4 +- tools/testing/selftests/bpf/progs/kfree_skb.c | 4 +- tools/testing/selftests/bpf/progs/linked_maps1.c | 2 +- tools/testing/selftests/bpf/progs/syscall.c | 121 ++++ tools/testing/selftests/bpf/progs/tailcall3.c | 2 +- tools/testing/selftests/bpf/progs/tailcall4.c | 2 +- tools/testing/selftests/bpf/progs/tailcall5.c | 2 +- .../selftests/bpf/progs/tailcall_bpf2bpf2.c | 2 +- .../selftests/bpf/progs/tailcall_bpf2bpf4.c | 2 +- tools/testing/selftests/bpf/progs/test_check_mtu.c | 4 +- .../selftests/bpf/progs/test_cls_redirect.c | 4 +- .../selftests/bpf/progs/test_global_func_args.c | 2 +- .../testing/selftests/bpf/progs/test_rdonly_maps.c | 6 +- tools/testing/selftests/bpf/progs/test_ringbuf.c | 4 +- tools/testing/selftests/bpf/progs/test_skeleton.c | 4 +- .../selftests/bpf/progs/test_snprintf_single.c | 2 +- .../selftests/bpf/progs/test_sockmap_listen.c | 4 +- .../selftests/bpf/progs/test_static_linked1.c | 10 +- .../selftests/bpf/progs/test_static_linked2.c | 10 +- tools/testing/selftests/bpf/progs/test_subprogs.c | 13 + tools/testing/selftests/bpf/progs/test_tc_bpf.c | 12 + tools/testing/selftests/bpf/progs/trace_printk.c | 6 +- 74 files changed, 3717 insertions(+), 578 deletions(-) create mode 100644 include/linux/bpfptr.h create mode 100644 tools/lib/bpf/bpf_gen_internal.h create mode 100644 tools/lib/bpf/gen_loader.c create mode 100644 tools/lib/bpf/skel_internal.h create mode 100644 tools/testing/selftests/bpf/prog_tests/syscall.c create mode 100644 tools/testing/selftests/bpf/prog_tests/tc_bpf.c create mode 100644 tools/testing/selftests/bpf/progs/syscall.c create mode 100644 tools/testing/selftests/bpf/progs/test_tc_bpf.c