Hi David, hi Jakub, The following pull-request contains BPF updates for your *net-next* tree. We've added 69 non-merge commits during the last 22 day(s) which contain a total of 69 files changed, 3141 insertions(+), 866 deletions(-). The main changes are: 1) Add BPF static linker support for extern resolution of global, from Andrii. 2) Refine retval for bpf_get_task_stack helper, from Dave. 3) Add a bpf_snprintf helper, from Florent. 4) A bunch of miscellaneous improvements from many developers. 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: Alexei Starovoitov, Andrii Nakryiko, Arnaldo Carvalho de Melo, Jakub Sitnicki, Jesper Dangaard Brouer, John Fastabend, Lorenz Bauer, Magnus Karlsson, Martin KaFai Lau, Song Liu, Toke Høiland-Jørgensen, Yonghong Song ---------------------------------------------------------------- The following changes since commit 82506665179209e43d3c9d39ffa42f8c8ff968bd: tcp: reorder tcp_congestion_ops for better cache locality (2021-04-02 14:32:27 -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 350a62ca065be252ababc43a7c96f8aca390a18f: bpf: Document the pahole release info related to libbpf in bpf_devel_QA.rst (2021-04-23 17:11:58 -0700) ---------------------------------------------------------------- Alexei Starovoitov (6): libbpf: Remove unused field. Merge branch 'bpf: tools: support build selftests/bpf with clang' Merge branch 'Add a snprintf eBPF helper' Merge branch 'bpf: refine retval for bpf_get_task_stack helper' Merge branch 'Simplify bpf_snprintf verifier code' Merge branch 'BPF static linker: support externs' Andrii Nakryiko (20): libbpf: Add bpf_map__inner_map API Merge branch 'bpf/selftests: page size fixes' bpftool: Support dumping BTF VAR's "extern" linkage bpftool: Dump more info about DATASEC members libbpf: Suppress compiler warning when using SEC() macro with externs libbpf: Mark BPF subprogs with hidden visibility as static for BPF verifier libbpf: Allow gaps in BPF program sections to support overriden weak functions libbpf: Refactor BTF map definition parsing libbpf: Factor out symtab and relos sanity checks libbpf: Make few internal helpers available outside of libbpf.c libbpf: Extend sanity checking ELF symbols with externs validation libbpf: Tighten BTF type ID rewriting with error checking libbpf: Add linker extern resolution support for functions and global variables libbpf: Support extern resolution for BTF-defined maps in .maps section selftests/bpf: Use -O0 instead of -Og in selftests builds selftests/bpf: Omit skeleton generation for multi-linked BPF object files selftests/bpf: Add function linking selftest selftests/bpf: Add global variables linking selftest selftests/bpf: Add map linking selftest selftests/bpf: Document latest Clang fix expectations for linking tests Cong Wang (3): bpf, udp: Remove some pointless comments skmsg: Pass psock pointer to ->psock_update_sk_prot() sock_map: Fix a potential use-after-free in sock_map_close() Daniel Borkmann (1): bpf: Sync bpf headers in tooling infrastucture Dave Marchevsky (3): bpf: Refine retval for bpf_get_task_stack helper bpf/selftests: Add bpf_get_task_stack retval bounds verifier test bpf/selftests: Add bpf_get_task_stack retval bounds test_prog Florent Revest (9): selftests/bpf: Fix the ASSERT_ERR_PTR macro bpf: Factorize bpf_trace_printk and bpf_seq_printf bpf: Add a ARG_PTR_TO_CONST_STR argument type bpf: Add a bpf_snprintf helper libbpf: Initialize the bpf_seq_printf parameters array field by field libbpf: Introduce a BPF_SNPRINTF helper macro selftests/bpf: Add a series of tests for bpf_snprintf bpf: Notify user if we ever hit a bpf_snprintf verifier bug bpf: Remove unnecessary map checks for ARG_PTR_TO_CONST_STR He Fengqing (1): bpf: Remove unused parameter from ___bpf_prog_run Hengqi Chen (1): libbpf: Fix KERNEL_VERSION macro Ilya Leoshkevich (1): bpf: Generate BTF_KIND_FLOAT when linking vmlinux Jiri Olsa (1): selftests/bpf: Add docs target as all dependency Joe Stringer (1): bpf: Document PROG_TEST_RUN limitations John Fastabend (1): bpf, selftests: test_maps generating unrecognized data section Li RongQing (1): xsk: Align XDP socket batch size with DPDK Martin KaFai Lau (1): bpf: selftests: Specify CONFIG_DYNAMIC_FTRACE in the testing config Martin Willi (1): net, xdp: Update pkt_type if generic XDP changes unicast MAC Muhammad Usama Anjum (1): bpf, inode: Remove second initialization of the bpf_preload_lock Pedro Tammela (1): libbpf: Clarify flags in ringbuf helpers Tiezhu Yang (2): bpf, doc: Fix some invalid links in bpf_devel_QA.rst bpf: Document the pahole release info related to libbpf in bpf_devel_QA.rst Toke Høiland-Jørgensen (2): bpf: Return target info when a tracing bpf_link is queried selftests/bpf: Add tests for target information in bpf_link info queries Wan Jiabing (2): bpf, cgroup: Delete repeated struct bpf_prog declaration bpf: Remove repeated struct btf_type declaration Yang Yingliang (1): libbpf: Remove redundant semi-colon Yaqi Chen (1): samples/bpf: Fix broken tracex1 due to kprobe argument change Yauheni Kaliuta (8): selftests/bpf: test_progs/sockopt_sk: Remove version selftests/bpf: test_progs/sockopt_sk: Convert to use BPF skeleton selftests/bpf: Pass page size from userspace in sockopt_sk selftests/bpf: Pass page size from userspace in map_ptr selftests/bpf: mmap: Use runtime page size selftests/bpf: ringbuf: Use runtime page size selftests/bpf: ringbuf_multi: Use runtime page size selftests/bpf: ringbuf_multi: Test bpf_map__set_inner_map_fd Yonghong Song (5): selftests: Set CC to clang in lib.mk if LLVM is set tools: Allow proper CC/CXX/... override with LLVM=1 in Makefile.include selftests/bpf: Fix test_cpp compilation failure with clang selftests/bpf: Silence clang compilation warnings bpftool: Fix a clang compilation warning zuoqilin (1): tools/testing: Remove unused variable Documentation/bpf/bpf_devel_QA.rst | 30 +- include/linux/bpf-cgroup.h | 1 - include/linux/bpf.h | 23 +- include/linux/bpf_verifier.h | 9 + include/linux/skmsg.h | 5 +- include/net/sock.h | 5 +- include/net/tcp.h | 2 +- include/net/udp.h | 2 +- include/uapi/linux/bpf.h | 67 ++ kernel/bpf/core.c | 7 +- kernel/bpf/helpers.c | 306 +++++ kernel/bpf/inode.c | 2 - kernel/bpf/syscall.c | 3 + kernel/bpf/verifier.c | 84 ++ kernel/trace/bpf_trace.c | 373 +----- net/core/dev.c | 6 +- net/core/sock_map.c | 5 +- net/ipv4/tcp_bpf.c | 3 +- net/ipv4/udp_bpf.c | 5 +- net/xdp/xsk.c | 2 +- samples/bpf/tracex1_kern.c | 4 +- scripts/link-vmlinux.sh | 7 +- tools/bpf/bpftool/btf.c | 30 +- tools/bpf/bpftool/net.c | 2 +- tools/include/uapi/linux/bpf.h | 83 +- tools/lib/bpf/bpf_helpers.h | 21 +- tools/lib/bpf/bpf_tracing.h | 58 +- tools/lib/bpf/btf.c | 5 - tools/lib/bpf/libbpf.c | 396 +++--- tools/lib/bpf/libbpf.h | 1 + tools/lib/bpf/libbpf.map | 1 + tools/lib/bpf/libbpf_internal.h | 45 + tools/lib/bpf/linker.c | 1272 +++++++++++++++++--- tools/scripts/Makefile.include | 12 +- tools/testing/selftests/bpf/Makefile | 28 +- tools/testing/selftests/bpf/README.rst | 9 + tools/testing/selftests/bpf/config | 2 + tools/testing/selftests/bpf/prog_tests/bpf_iter.c | 1 + .../selftests/bpf/prog_tests/fexit_bpf2bpf.c | 58 +- .../testing/selftests/bpf/prog_tests/fexit_sleep.c | 4 +- .../selftests/bpf/prog_tests/linked_funcs.c | 42 + .../testing/selftests/bpf/prog_tests/linked_maps.c | 30 + .../testing/selftests/bpf/prog_tests/linked_vars.c | 43 + tools/testing/selftests/bpf/prog_tests/map_ptr.c | 15 +- tools/testing/selftests/bpf/prog_tests/mmap.c | 24 +- .../selftests/bpf/prog_tests/ns_current_pid_tgid.c | 4 +- tools/testing/selftests/bpf/prog_tests/ringbuf.c | 17 +- .../selftests/bpf/prog_tests/ringbuf_multi.c | 37 +- tools/testing/selftests/bpf/prog_tests/snprintf.c | 125 ++ .../testing/selftests/bpf/prog_tests/sockopt_sk.c | 65 +- .../selftests/bpf/progs/bpf_iter_task_stack.c | 27 + tools/testing/selftests/bpf/progs/linked_funcs1.c | 73 ++ tools/testing/selftests/bpf/progs/linked_funcs2.c | 73 ++ tools/testing/selftests/bpf/progs/linked_maps1.c | 82 ++ tools/testing/selftests/bpf/progs/linked_maps2.c | 76 ++ tools/testing/selftests/bpf/progs/linked_vars1.c | 54 + tools/testing/selftests/bpf/progs/linked_vars2.c | 55 + tools/testing/selftests/bpf/progs/map_ptr_kern.c | 4 +- .../selftests/bpf/progs/sockmap_tcp_msg_prog.c | 12 - tools/testing/selftests/bpf/progs/sockopt_sk.c | 11 +- tools/testing/selftests/bpf/progs/test_mmap.c | 2 - tools/testing/selftests/bpf/progs/test_ringbuf.c | 1 - .../selftests/bpf/progs/test_ringbuf_multi.c | 12 +- tools/testing/selftests/bpf/progs/test_snprintf.c | 73 ++ .../selftests/bpf/progs/test_snprintf_single.c | 20 + .../testing/selftests/bpf/progs/test_tunnel_kern.c | 2 +- tools/testing/selftests/bpf/test_progs.h | 2 +- .../testing/selftests/bpf/verifier/bpf_get_stack.c | 43 + tools/testing/selftests/lib.mk | 4 + 69 files changed, 3141 insertions(+), 866 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/linked_funcs.c create mode 100644 tools/testing/selftests/bpf/prog_tests/linked_maps.c create mode 100644 tools/testing/selftests/bpf/prog_tests/linked_vars.c create mode 100644 tools/testing/selftests/bpf/prog_tests/snprintf.c create mode 100644 tools/testing/selftests/bpf/progs/linked_funcs1.c create mode 100644 tools/testing/selftests/bpf/progs/linked_funcs2.c create mode 100644 tools/testing/selftests/bpf/progs/linked_maps1.c create mode 100644 tools/testing/selftests/bpf/progs/linked_maps2.c create mode 100644 tools/testing/selftests/bpf/progs/linked_vars1.c create mode 100644 tools/testing/selftests/bpf/progs/linked_vars2.c create mode 100644 tools/testing/selftests/bpf/progs/test_snprintf.c create mode 100644 tools/testing/selftests/bpf/progs/test_snprintf_single.c