Hi David, hi Jakub, The following pull-request contains BPF updates for your *net-next* tree. We've added 64 non-merge commits during the last 15 day(s) which contain a total of 83 files changed, 5027 insertions(+), 1808 deletions(-). The main changes are: 1) BTF-guided binary data dumping libbpf API, from Alan. 2) Internal factoring out of libbpf CO-RE relocation logic, from Alexei. 3) Ambient BPF run context and cgroup storage cleanup, from Andrii. 4) Few small API additions for libbpf 1.0 effort, from Evgeniy and Hengqi. 5) bpf_program__attach_kprobe_opts() fixes in libbpf, from Jiri. 6) bpf_{get,set}sockopt() support in BPF iterators, from Martin. 7) BPF map pinning improvements in libbpf, from Martynas. 8) Improved module BTF support in libbpf and bpftool, from Quentin. 9) Bpftool cleanups and documentation improvements, from Quentin. 10) Libbpf improvements for supporting CO-RE on old kernels, from Shuyi. 11) Increased maximum cgroup storage size, from Stanislav. 12) Small fixes and improvements to BPF tests and samples, from various folks. 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: Alan Maguire, Andrii Nakryiko, Eric Dumazet, Jakub Sitnicki, John Fastabend, Kuniyuki Iwashima, Linux Kernel Functional Testing, Martin KaFai Lau, Naresh Kamboju, Song Liu, Yonghong Song ---------------------------------------------------------------- The following changes since commit d4861fc6be581561d6964700110a4dede54da6a6: netdevsim: Add multi-queue support (2021-07-16 11:17:56 -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 ab0720ce227cc54a2b841dc3c926ed83a819e4fb: Merge branch 'tools: bpftool: update, synchronise and validate types and options' (2021-07-30 15:40:28 -0700) ---------------------------------------------------------------- Alan Maguire (9): libbpf: BTF dumper support for typed data selftests/bpf: Add ASSERT_STRNEQ() variant for test_progs selftests/bpf: Add dump type data tests to btf dump tests libbpf: Clarify/fix unaligned data issues for btf typed dump libbpf: Fix compilation errors on ppc64le for btf dump typed data libbpf: Btf typed dump does not need to allocate dump data libbpf: Avoid use of __int128 in typed dump display selftests/bpf: Add __int128-specific tests for typed data dump libbpf: Propagate errors when retrieving enum value for typed data display Alexei Starovoitov (4): libbpf: Cleanup the layering between CORE and bpf_program. libbpf: Split bpf_core_apply_relo() into bpf_program independent helper. libbpf: Move CO-RE types into relo_core.h. libbpf: Split CO-RE logic into relo_core.c. Andrii Nakryiko (9): bpf: Add ambient BPF runtime context stored in current Merge branch 'Add btf_custom_path in bpf_obj_open_opts' Merge branch 'libbpf: BTF dumper support for typed data' Merge branch 'libbpf: BTF typed dump cleanups' Merge branch 'libbpf: btf typed data dumping fixes (__int128 usage, error propagation)' Merge branch 'bpf: Allow bpf tcp iter to do bpf_(get|set)sockopt' Merge branch 'libbpf: Move CO-RE logic into separate file.' Merge branch 'libbpf: rename btf__get_from_id() and btf__load() APIs, support split BTF' Merge branch 'tools: bpftool: update, synchronise and validate types and options' Arnd Bergmann (1): bpf: Fix pointer cast warning Colin Ian King (1): bpf: Remove redundant intiialization of variable stype Cong Wang (1): unix_bpf: Fix a potential deadlock in unix_dgram_bpf_recvmsg() Evgeniy Litvinenko (2): libbpf: Add bpf_map__pin_path function selftests/bpf: Document vmtest.sh dependencies Hengqi Chen (2): tools/resolve_btfids: Emit warnings and patch zero id for missing symbols libbpf: Add btf__load_vmlinux_btf/btf__load_module_btf Jason Wang (1): libbpf: Fix comment typo Jiri Olsa (3): libbpf: Fix func leak in attach_kprobe libbpf: Allow decimal offset for kprobes libbpf: Export bpf_program__attach_kprobe_opts function Johan Almbladh (2): bpf/tests: Fix copy-and-paste error in double word test bpf/tests: Do not PASS tests without actually testing the result John Fastabend (1): bpf, selftests: Fix test_maps now that sockmap supports UDP Juhee Kang (2): samples: bpf: Fix tracex7 error raised on the missing argument samples: bpf: Add the omitted xdp samples to .gitignore Jussi Maki (1): selftests/bpf: Use ping6 only if available in tc_redirect Martin KaFai Lau (8): tcp: seq_file: Avoid skipping sk during tcp_seek_last_pos tcp: seq_file: Refactor net and family matching bpf: tcp: seq_file: Remove bpf_seq_afinfo from tcp_iter_state tcp: seq_file: Add listening_get_first() tcp: seq_file: Replace listening_hash with lhash2 bpf: tcp: Bpf iter batching and lock_sock bpf: tcp: Support bpf_(get|set)sockopt in bpf tcp iter bpf: selftest: Test batching and bpf_(get|set)sockopt in bpf tcp iter Martynas Pumputis (4): libbpf: Fix removal of inner map in bpf_object__create_map selftests/bpf: Check inner map deletion selftests/bpf: Mute expected invalid map creation error msg libbpf: Fix race when pinning maps in parallel Quentin Monnet (14): libbpf: Return non-null error on failures in libbpf_find_prog_btf_id() libbpf: Rename btf__load() as btf__load_into_kernel() libbpf: Rename btf__get_from_id() as btf__load_from_kernel_by_id() tools: Free BTF objects at various locations tools: Replace btf__get_from_id() with btf__load_from_kernel_by_id() libbpf: Add split BTF support for btf__load_from_kernel_by_id() tools: bpftool: Support dumping split BTF by id tools: bpftool: Slightly ease bash completion updates selftests/bpf: Check consistency between bpftool source, doc, completion tools: bpftool: Complete and synchronise attach or map types tools: bpftool: Update and synchronise option list in doc and help msg selftests/bpf: Update bpftool's consistency script for checking options tools: bpftool: Document and add bash completion for -L, -B options tools: bpftool: Complete metrics list in "bpftool prog profile" doc Roy, UjjaL (1): bpf, doc: Add heading and example for extensions in cbpf Shuyi Cheng (3): libbpf: Introduce 'btf_custom_path' to 'bpf_obj_open_opts' libbpf: Fix the possible memory leak on error selftests/bpf: Switch existing selftests to using open_opts for custom BTF Stanislav Fomichev (1): bpf: Increase supported cgroup storage value size Vincent Li (1): selftests, bpf: test_tc_tunnel.sh nc: Cannot use -p and -l Yonghong Song (1): bpf: Emit better log message if bpf_iter ctx arg btf_id == 0 Documentation/networking/filter.rst | 23 +- include/linux/bpf-cgroup.h | 54 - include/linux/bpf.h | 62 +- include/linux/sched.h | 3 + include/net/inet_hashtables.h | 6 + include/net/tcp.h | 1 - kernel/bpf/bpf_iter.c | 22 + kernel/bpf/btf.c | 5 + kernel/bpf/helpers.c | 16 +- kernel/bpf/local_storage.c | 16 +- kernel/fork.c | 1 + kernel/trace/bpf_trace.c | 9 +- lib/test_bpf.c | 13 +- net/bpf/test_run.c | 23 +- net/core/filter.c | 34 + net/ipv4/tcp_ipv4.c | 410 ++++-- net/unix/unix_bpf.c | 16 +- samples/bpf/.gitignore | 2 + samples/bpf/test_override_return.sh | 1 + samples/bpf/tracex7_user.c | 5 + tools/bpf/bpftool/Documentation/bpftool-btf.rst | 48 +- tools/bpf/bpftool/Documentation/bpftool-cgroup.rst | 3 +- .../bpf/bpftool/Documentation/bpftool-feature.rst | 2 +- tools/bpf/bpftool/Documentation/bpftool-gen.rst | 9 +- tools/bpf/bpftool/Documentation/bpftool-iter.rst | 2 + tools/bpf/bpftool/Documentation/bpftool-link.rst | 3 +- tools/bpf/bpftool/Documentation/bpftool-map.rst | 3 +- tools/bpf/bpftool/Documentation/bpftool-net.rst | 2 +- tools/bpf/bpftool/Documentation/bpftool-perf.rst | 2 +- tools/bpf/bpftool/Documentation/bpftool-prog.rst | 36 +- .../bpftool/Documentation/bpftool-struct_ops.rst | 2 +- tools/bpf/bpftool/Documentation/bpftool.rst | 12 +- tools/bpf/bpftool/bash-completion/bpftool | 66 +- tools/bpf/bpftool/btf.c | 11 +- tools/bpf/bpftool/btf_dumper.c | 6 +- tools/bpf/bpftool/cgroup.c | 3 +- tools/bpf/bpftool/common.c | 6 + tools/bpf/bpftool/feature.c | 1 + tools/bpf/bpftool/gen.c | 3 +- tools/bpf/bpftool/iter.c | 2 + tools/bpf/bpftool/link.c | 3 +- tools/bpf/bpftool/main.c | 3 +- tools/bpf/bpftool/main.h | 3 +- tools/bpf/bpftool/map.c | 19 +- tools/bpf/bpftool/net.c | 1 + tools/bpf/bpftool/perf.c | 5 +- tools/bpf/bpftool/prog.c | 37 +- tools/bpf/bpftool/struct_ops.c | 2 +- tools/bpf/resolve_btfids/main.c | 13 +- tools/lib/bpf/Build | 2 +- tools/lib/bpf/btf.c | 47 +- tools/lib/bpf/btf.h | 31 +- tools/lib/bpf/btf_dump.c | 871 +++++++++++- tools/lib/bpf/libbpf.c | 1463 ++------------------ tools/lib/bpf/libbpf.h | 25 +- tools/lib/bpf/libbpf.map | 8 + tools/lib/bpf/libbpf_internal.h | 81 +- tools/lib/bpf/relo_core.c | 1295 +++++++++++++++++ tools/lib/bpf/relo_core.h | 100 ++ tools/perf/util/bpf-event.c | 11 +- tools/perf/util/bpf_counter.c | 12 +- tools/testing/selftests/bpf/README.rst | 7 + tools/testing/selftests/bpf/netcnt_common.h | 38 +- tools/testing/selftests/bpf/network_helpers.c | 85 +- tools/testing/selftests/bpf/network_helpers.h | 4 + .../selftests/bpf/prog_tests/bpf_iter_setsockopt.c | 226 +++ tools/testing/selftests/bpf/prog_tests/btf.c | 4 +- tools/testing/selftests/bpf/prog_tests/btf_dump.c | 615 ++++++++ .../selftests/bpf/prog_tests/core_autosize.c | 22 +- .../testing/selftests/bpf/prog_tests/core_reloc.c | 25 +- .../selftests/bpf/prog_tests/get_func_ip_test.c | 2 + tools/testing/selftests/bpf/prog_tests/pinning.c | 9 + .../testing/selftests/bpf/prog_tests/tc_redirect.c | 23 +- .../selftests/bpf/progs/bpf_iter_setsockopt.c | 72 + .../testing/selftests/bpf/progs/bpf_tracing_net.h | 6 + .../testing/selftests/bpf/progs/get_func_ip_test.c | 11 + tools/testing/selftests/bpf/progs/netcnt_prog.c | 8 +- .../selftests/bpf/progs/test_map_in_map_invalid.c | 26 + .../selftests/bpf/test_bpftool_synctypes.py | 586 ++++++++ tools/testing/selftests/bpf/test_maps.c | 72 +- tools/testing/selftests/bpf/test_netcnt.c | 4 +- tools/testing/selftests/bpf/test_progs.h | 12 + tools/testing/selftests/bpf/test_tc_tunnel.sh | 2 +- 83 files changed, 5027 insertions(+), 1808 deletions(-) create mode 100644 tools/lib/bpf/relo_core.c create mode 100644 tools/lib/bpf/relo_core.h create mode 100644 tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt.c create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_setsockopt.c create mode 100644 tools/testing/selftests/bpf/progs/test_map_in_map_invalid.c create mode 100755 tools/testing/selftests/bpf/test_bpftool_synctypes.py