Hi, The following pull-request contains BPF updates for your *net-next* tree. We've added 62 non-merge commits during the last 10 day(s) which contain a total of 73 files changed, 4339 insertions(+), 772 deletions(-). The main changes are: 1) The BPF verifier improvements to track register allocation pattern, from Alexei and Yonghong. 2) libbpf relocation support for different size load/store, from Andrii. 3) bpf_redirect_peer() helper and support for inner map array with different max_entries, from Daniel. 4) BPF support for per-cpu variables, form Hao. 5) sockmap improvements, from John. 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, Christoph Hellwig, David Ahern, John Fastabend, Martin KaFai Lau, Petar Penkov, Samanta Navarro, Stanislav Fomichev, Yonghong Song ---------------------------------------------------------------- The following changes since commit 360f89874635b08057757376b8cc4faa221862e2: lib8390: Use netif_msg_init to initialize msg_enable bits (2020-10-01 19:08:46 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git for you to fetch changes up to 376dcfe3a4e5a5475a84e6b5f926066a8614f887: Merge branch 'bpf, sockmap: allow verdict only sk_skb progs' (2020-10-11 18:09:45 -0700) ---------------------------------------------------------------- Alexei Starovoitov (13): Merge branch 'Do not limit cb_flags when creating child sk' Merge branch 'bpf: BTF support for ksyms' Merge branch 'Add skb_adjust_room() for SK_SKB' Merge branch 'Fix pining maps after reuse map fd' Merge branch 'libbpf: auto-resize relocatable LOAD/STORE instructions' bpf: Propagate scalar ranges through register assignments. selftests/bpf: Add profiler test selftests/bpf: Asm tests for the verifier regalloc tracking. Merge branch 'Follow-up BPF helper improvements' Merge branch 'samples: bpf: Refactor XDP programs with libbpf' bpf: Migrate from patchwork.ozlabs.org to patchwork.kernel.org. Merge branch 'sockmap/sk_skb program memory acct fixes' Merge branch 'bpf, sockmap: allow verdict only sk_skb progs' Andrii Nakryiko (5): bpf, doc: Update Andrii's email in MAINTAINERS libbpf: Skip CO-RE relocations for not loaded BPF programs libbpf: Support safe subset of load/store instruction resizing with CO-RE libbpf: Allow specifying both ELF and raw BTF for CO-RE BTF override selftests/bpf: Validate libbpf's auto-sizing of LD/ST/STX instructions Björn Töpel (1): xsk: Remove internal DMA headers Ciara Loftus (3): samples: bpf: Split xdpsock stats into new struct samples: bpf: Count syscalls in xdpsock samples: bpf: Driver interrupt statistics in xdpsock Daniel Borkmann (7): Merge branch 'bpf-llvm-reg-alloc-patterns' bpf: Improve bpf_redirect_neigh helper description bpf: Add redirect_peer helper bpf: Allow for map-in-map with dynamic inner array map entries bpf, selftests: Add test for different array inner map size bpf, selftests: Make redirect_neigh test more extensible bpf, selftests: Add redirect_peer selftest Daniel T. Lee (3): samples: bpf: Refactor xdp_monitor with libbpf samples: bpf: Replace attach_tracepoint() to attach() in xdp_redirect_cpu samples: bpf: Refactor XDP kern program maps with BTF-defined map Gustavo A. R. Silva (1): bpf, verifier: Use fallthrough pseudo-keyword Hangbin Liu (3): libbpf: Close map fd if init map slots failed libbpf: Check if pin_path was set even map fd exist selftest/bpf: Test pinning map with reused map fd Hao Luo (7): bpf: Introduce pseudo_btf_id bpf/libbpf: BTF support for typed ksyms selftests/bpf: Ksyms_btf to test typed ksyms bpf: Introduce bpf_per_cpu_ptr() bpf: Introducte bpf_this_cpu_ptr() bpf/selftests: Test for bpf_per_cpu_ptr() and bpf_this_cpu_ptr() selftests/bpf: Fix test_verifier after introducing resolve_pseudo_ldimm64 Jakub Wilk (1): bpf: Fix typo in uapi/linux/bpf.h John Fastabend (12): bpf, sockmap: Add skb_adjust_room to pop bytes off ingress payload bpf, sockmap: Update selftests to use skb_adjust_room bpf, sockmap: Skb verdict SK_PASS to self already checked rmem limits bpf, sockmap: On receive programs try to fast track SK_PASS ingress bpf, sockmap: Remove skb_set_owner_w wmem will be taken later from sendpage bpf, sockmap: Remove dropped data on errors in redirect case bpf, sockmap: Remove skb_orphan and let normal skb_kfree do cleanup bpf, sockmap: Add memory accounting so skbs on ingress lists are visible bpf, sockmap: Check skb_verdict and skb_parser programs explicitly bpf, sockmap: Allow skipping sk_skb parser program bpf, selftests: Add option to test_sockmap to omit adding parser program bpf, selftests: Add three new sockmap tests for verdict only programs Luigi Rizzo (1): bpf, libbpf: Use valid btf in bpf_program__set_attach_target Magnus Karlsson (2): libbpf: Fix compatibility problem in xsk_socket__create xsk: Introduce padding between ring pointers Martin KaFai Lau (2): bpf: tcp: Do not limit cb_flags when creating child sk from listen sk bpf: selftest: Ensure the child sk inherited all bpf_sock_ops_cb_flags Nikita V. Shirokov (1): bpf: Add tcp_notsent_lowat bpf setsockopt Randy Dunlap (1): kernel/bpf/verifier: Fix build when NET is not enabled Song Liu (1): bpf: Use raw_spin_trylock() for pcpu_freelist_push/pop in NMI Stanislav Fomichev (3): selftests/bpf: Initialize duration in xdp_noinline.c selftests/bpf: Properly initialize linfo in sockmap_basic bpf: Deref map in BPF_PROG_BIND_MAP when it's already used Toke Høiland-Jørgensen (1): bpf: Always return target ifindex in bpf_fib_lookup Yonghong Song (4): samples/bpf: Change Makefile to cope with latest llvm samples/bpf: Fix a compilation error with fallthrough marking bpf: Fix build failure for kernel/trace/bpf_trace.c with CONFIG_NET=n bpf: Track spill/fill of bounded scalars. Documentation/bpf/bpf_devel_QA.rst | 4 +- MAINTAINERS | 2 +- drivers/net/veth.c | 9 + include/linux/bpf.h | 8 +- include/linux/bpf_verifier.h | 7 + include/linux/btf.h | 26 + include/linux/netdevice.h | 4 + include/linux/skmsg.h | 2 + include/net/tcp.h | 33 - include/uapi/linux/bpf.h | 101 ++- kernel/bpf/arraymap.c | 17 +- kernel/bpf/btf.c | 25 - kernel/bpf/hashtab.c | 6 +- kernel/bpf/helpers.c | 32 + kernel/bpf/percpu_freelist.c | 101 ++- kernel/bpf/percpu_freelist.h | 1 + kernel/bpf/syscall.c | 4 +- kernel/bpf/verifier.c | 270 +++++- kernel/trace/bpf_trace.c | 6 + net/core/dev.c | 15 +- net/core/filter.c | 107 ++- net/core/skmsg.c | 161 +++- net/core/sock_map.c | 37 +- net/ipv4/tcp_minisocks.c | 1 - net/xdp/xsk_buff_pool.c | 3 - net/xdp/xsk_queue.h | 4 + net/xdp/xskmap.c | 2 +- samples/bpf/Makefile | 15 +- samples/bpf/hbm.c | 3 +- samples/bpf/xdp_monitor_kern.c | 60 +- samples/bpf/xdp_monitor_user.c | 159 +++- samples/bpf/xdp_redirect_cpu_user.c | 153 ++-- samples/bpf/xdp_sample_pkts_kern.c | 14 +- samples/bpf/xdp_sample_pkts_user.c | 1 - samples/bpf/xdpsock_user.c | 354 ++++++-- tools/include/uapi/linux/bpf.h | 101 ++- tools/lib/bpf/libbpf.c | 348 ++++++-- tools/lib/bpf/xsk.c | 7 +- tools/testing/selftests/bpf/README.rst | 38 + tools/testing/selftests/bpf/prog_tests/align.c | 16 +- .../selftests/bpf/prog_tests/btf_map_in_map.c | 39 +- .../selftests/bpf/prog_tests/core_autosize.c | 225 +++++ tools/testing/selftests/bpf/prog_tests/ksyms.c | 38 +- tools/testing/selftests/bpf/prog_tests/ksyms_btf.c | 88 ++ tools/testing/selftests/bpf/prog_tests/pinning.c | 49 +- .../selftests/bpf/prog_tests/sockmap_basic.c | 2 +- .../selftests/bpf/prog_tests/tcp_hdr_options.c | 12 + .../selftests/bpf/prog_tests/test_profiler.c | 72 ++ .../selftests/bpf/prog_tests/xdp_noinline.c | 2 +- tools/testing/selftests/bpf/progs/connect4_prog.c | 19 + tools/testing/selftests/bpf/progs/profiler.h | 177 ++++ tools/testing/selftests/bpf/progs/profiler.inc.h | 969 +++++++++++++++++++++ tools/testing/selftests/bpf/progs/profiler1.c | 6 + tools/testing/selftests/bpf/progs/profiler2.c | 6 + tools/testing/selftests/bpf/progs/profiler3.c | 6 + .../selftests/bpf/progs/test_btf_map_in_map.c | 43 + .../selftests/bpf/progs/test_core_autosize.c | 172 ++++ tools/testing/selftests/bpf/progs/test_ksyms_btf.c | 55 ++ .../bpf/progs/test_misc_tcp_hdr_options.c | 4 +- .../selftests/bpf/progs/test_sockmap_kern.h | 34 +- tools/testing/selftests/bpf/progs/test_tc_neigh.c | 40 +- tools/testing/selftests/bpf/progs/test_tc_peer.c | 45 + .../selftests/bpf/progs/test_tcp_hdr_options.c | 7 +- tools/testing/selftests/bpf/test_sockmap.c | 81 +- tools/testing/selftests/bpf/test_tc_neigh.sh | 168 ---- tools/testing/selftests/bpf/test_tc_redirect.sh | 204 +++++ tools/testing/selftests/bpf/test_tcp_hdr_options.h | 5 +- tools/testing/selftests/bpf/trace_helpers.c | 27 + tools/testing/selftests/bpf/trace_helpers.h | 4 + tools/testing/selftests/bpf/verifier/basic.c | 2 +- .../selftests/bpf/verifier/direct_packet_access.c | 2 +- tools/testing/selftests/bpf/verifier/ld_imm64.c | 8 - tools/testing/selftests/bpf/verifier/regalloc.c | 243 ++++++ 73 files changed, 4339 insertions(+), 772 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/core_autosize.c create mode 100644 tools/testing/selftests/bpf/prog_tests/ksyms_btf.c create mode 100644 tools/testing/selftests/bpf/prog_tests/test_profiler.c create mode 100644 tools/testing/selftests/bpf/progs/profiler.h create mode 100644 tools/testing/selftests/bpf/progs/profiler.inc.h create mode 100644 tools/testing/selftests/bpf/progs/profiler1.c create mode 100644 tools/testing/selftests/bpf/progs/profiler2.c create mode 100644 tools/testing/selftests/bpf/progs/profiler3.c create mode 100644 tools/testing/selftests/bpf/progs/test_core_autosize.c create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_btf.c create mode 100644 tools/testing/selftests/bpf/progs/test_tc_peer.c delete mode 100755 tools/testing/selftests/bpf/test_tc_neigh.sh create mode 100755 tools/testing/selftests/bpf/test_tc_redirect.sh create mode 100644 tools/testing/selftests/bpf/verifier/regalloc.c