Hi David, The following pull-request contains BPF updates for your *net-next* tree. We've added 55 non-merge commits during the last 1 day(s) which contain a total of 91 files changed, 4986 insertions(+), 463 deletions(-). The main changes are: 1) Add rx_queue_mapping to bpf_sock from Amritha. 2) Add BPF ring buffer, from Andrii. 3) Attach and run programs through devmap, from David. 4) Allow SO_BINDTODEVICE opt in bpf_setsockopt, from Ferenc. 5) link based flow_dissector, from Jakub. 6) Use tracing helpers for lsm programs, from Jiri. 7) Several sk_msg fixes and extensions, 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: Andrii Nakryiko, Jakub Sitnicki, Jesper Dangaard Brouer, Song Liu, Stanislav Fomichev, Toke Høiland-Jørgensen, Yonghong Song ---------------------------------------------------------------- The following changes since commit 90040351a832acf862c8f1855c29411303d23755: tools, bpftool: Clean subcommand help messages (2020-06-01 14:38:18 -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 cf51abcded837ef209faa03a62b2ea44e45995e8: Merge branch 'Link-based-attach-to-netns' (2020-06-01 15:21:12 -0700) ---------------------------------------------------------------- Alexei Starovoitov (5): Merge branch 'xdp_devmap' tools/bpf: sync bpf.h Merge branch 'fix-ktls-with-sk_skb_verdict' Merge branch 'bpf_setsockopt-SO_BINDTODEVICE' Merge branch 'Link-based-attach-to-netns' Amritha Nambiar (1): bpf: Add rx_queue_mapping to bpf_sock Andrii Nakryiko (6): bpf: Implement BPF ring buffer and verifier support for it libbpf: Add BPF ring buffer support selftests/bpf: Add BPF ringbuf selftests bpf: Add BPF ringbuf and perf buffer benchmarks docs/bpf: Add BPF ring buffer design notes libbpf: Add _GNU_SOURCE for reallocarray to ringbuf.c Anton Protopopov (5): selftests/bpf: Fix a typo in test_maps selftests/bpf: Cleanup some file descriptors in test_maps selftests/bpf: Cleanup comments in test_maps bpf: Fix map permissions check selftests/bpf: Add tests for write-only stacks/queues Chris Packham (1): bpf: Fix spelling in comment explaining ARG1 in ___bpf_prog_run Daniel Borkmann (1): Merge branch 'bpf-ring-buffer' David Ahern (5): devmap: Formalize map value as a named struct bpf: Add support to attach bpf program to a devmap entry xdp: Add xdp_txq_info to xdp_buff libbpf: Add SEC name for xdp programs attached to device map selftest: Add tests for XDP programs in devmap entries Denis Efremov (1): bpf: Change kvfree to kfree in generic_map_lookup_batch() Eelco Chaudron (2): libbpf: Add API to consume the perf ring buffer content libbpf: Fix perf_buffer__free() API for sparse allocs Ferenc Fejes (3): net: Make locking in sock_bindtoindex optional bpf: Allow SO_BINDTODEVICE opt in bpf_setsockopt selftests/bpf: Add test for SO_BINDTODEVICE opt of bpf_setsockopt Jakub Sitnicki (13): bpf: Fix returned error sign when link doesn't support updates flow_dissector: Pull locking up from prog attach callback net: Introduce netns_bpf for BPF programs attached to netns flow_dissector: Move out netns_bpf prog callbacks bpf: Add link-based BPF program attachment to network namespace bpf, cgroup: Return ENOLINK for auto-detached links on update libbpf: Add support for bpf_link-based netns attachment bpftool: Extract helpers for showing link attach type bpftool: Support link show for netns-attached links selftests/bpf: Add tests for attaching bpf_link to netns selftests/bpf, flow_dissector: Close TAP device FD after the test selftests/bpf: Convert test_flow_dissector to use BPF skeleton selftests/bpf: Extend test_flow_dissector to cover link creation Jiri Olsa (1): bpf: Use tracing helpers for lsm programs John Fastabend (8): bpf, sk_msg: Add some generic helpers that may be useful from sk_msg bpf: Extend bpf_base_func_proto helpers with probe_* and *current_task* bpf, sk_msg: Add get socket storage helpers bpf, selftests: Add sk_msg helpers load and attach test bpf, selftests: Test probe_* helpers from SCHED_CLS bpf: Refactor sockmap redirect code so its easy to reuse bpf: Fix running sk_skb program types with ktls bpf, selftests: Add test for ktls with skb bpf ingress policy Lorenzo Bianconi (2): xdp: Introduce xdp_convert_frame_to_buff utility routine xdp: Rename convert_to_xdp_frame in xdp_convert_buff_to_frame Lukas Bulwahn (1): MAINTAINERS: Adjust entry in XDP SOCKETS to actual file name Nikolay Borisov (1): libbpf: Install headers as part of make install Quentin Monnet (1): tools, bpftool: Make capability check account for new BPF caps Tobias Klauser (1): tools, bpftool: Print correct error message when failing to load BTF Yauheni Kaliuta (1): libbpf: Use .so dynamic symbols for abi check Yonghong Song (1): bpf: Use strncpy_from_unsafe_strict() in bpf_seq_printf() helper Documentation/bpf/ringbuf.rst | 209 ++++++++ MAINTAINERS | 2 +- drivers/net/ethernet/amazon/ena/ena_netdev.c | 2 +- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 2 +- drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 2 +- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +- drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 2 +- drivers/net/ethernet/marvell/mvneta.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 10 +- drivers/net/ethernet/sfc/rx.c | 2 +- drivers/net/ethernet/socionext/netsec.c | 2 +- drivers/net/ethernet/ti/cpsw_priv.c | 2 +- drivers/net/tun.c | 2 +- drivers/net/veth.c | 8 +- drivers/net/virtio_net.c | 4 +- include/linux/bpf-netns.h | 64 +++ include/linux/bpf.h | 21 + include/linux/bpf_types.h | 4 + include/linux/bpf_verifier.h | 4 + include/linux/skbuff.h | 26 - include/linux/skmsg.h | 8 + include/net/flow_dissector.h | 6 + include/net/net_namespace.h | 4 +- include/net/netns/bpf.h | 18 + include/net/sock.h | 2 +- include/net/tls.h | 9 + include/net/xdp.h | 17 +- include/uapi/linux/bpf.h | 95 +++- kernel/bpf/Makefile | 3 +- kernel/bpf/bpf_lsm.c | 2 +- kernel/bpf/cgroup.c | 2 +- kernel/bpf/core.c | 2 +- kernel/bpf/cpumap.c | 2 +- kernel/bpf/devmap.c | 132 ++++- kernel/bpf/helpers.c | 34 ++ kernel/bpf/net_namespace.c | 373 +++++++++++++ kernel/bpf/ringbuf.c | 501 ++++++++++++++++++ kernel/bpf/syscall.c | 29 +- kernel/bpf/verifier.c | 195 +++++-- kernel/trace/bpf_trace.c | 28 +- net/core/dev.c | 18 + net/core/filter.c | 94 +++- net/core/flow_dissector.c | 124 +---- net/core/skmsg.c | 98 +++- net/core/sock.c | 10 +- net/ipv4/udp_tunnel.c | 2 +- net/ipv6/ip6_udp_tunnel.c | 2 +- net/tls/tls_sw.c | 20 +- tools/bpf/bpftool/btf.c | 2 +- tools/bpf/bpftool/feature.c | 85 ++- tools/bpf/bpftool/link.c | 54 +- tools/include/uapi/linux/bpf.h | 95 +++- tools/lib/bpf/Build | 2 +- tools/lib/bpf/Makefile | 6 +- tools/lib/bpf/libbpf.c | 49 +- tools/lib/bpf/libbpf.h | 24 + tools/lib/bpf/libbpf.map | 7 + tools/lib/bpf/libbpf_probes.c | 5 + tools/lib/bpf/ringbuf.c | 288 ++++++++++ tools/testing/selftests/bpf/Makefile | 5 +- tools/testing/selftests/bpf/bench.c | 16 + .../testing/selftests/bpf/benchs/bench_ringbufs.c | 566 ++++++++++++++++++++ .../selftests/bpf/benchs/run_bench_ringbufs.sh | 75 +++ .../selftests/bpf/prog_tests/flow_dissector.c | 166 ++++-- .../bpf/prog_tests/flow_dissector_reattach.c | 588 +++++++++++++++++++-- tools/testing/selftests/bpf/prog_tests/ringbuf.c | 211 ++++++++ .../selftests/bpf/prog_tests/ringbuf_multi.c | 102 ++++ .../testing/selftests/bpf/prog_tests/skb_helpers.c | 30 ++ .../selftests/bpf/prog_tests/sockmap_basic.c | 35 ++ .../selftests/bpf/prog_tests/xdp_devmap_attach.c | 97 ++++ tools/testing/selftests/bpf/progs/bpf_flow.c | 20 +- tools/testing/selftests/bpf/progs/connect4_prog.c | 33 ++ tools/testing/selftests/bpf/progs/perfbuf_bench.c | 33 ++ tools/testing/selftests/bpf/progs/ringbuf_bench.c | 60 +++ tools/testing/selftests/bpf/progs/test_ringbuf.c | 78 +++ .../selftests/bpf/progs/test_ringbuf_multi.c | 77 +++ .../testing/selftests/bpf/progs/test_skb_helpers.c | 28 + .../selftests/bpf/progs/test_skmsg_load_helpers.c | 47 ++ .../selftests/bpf/progs/test_sockmap_kern.h | 46 +- .../selftests/bpf/progs/test_xdp_devmap_helpers.c | 22 + .../bpf/progs/test_xdp_with_devmap_helpers.c | 44 ++ tools/testing/selftests/bpf/test_maps.c | 52 +- tools/testing/selftests/bpf/test_sockmap.c | 163 +++++- tools/testing/selftests/bpf/verifier/and.c | 4 +- .../testing/selftests/bpf/verifier/array_access.c | 4 +- tools/testing/selftests/bpf/verifier/bounds.c | 6 +- tools/testing/selftests/bpf/verifier/calls.c | 2 +- .../selftests/bpf/verifier/direct_value_access.c | 4 +- .../selftests/bpf/verifier/helper_access_var_len.c | 2 +- .../selftests/bpf/verifier/helper_value_access.c | 6 +- .../selftests/bpf/verifier/value_ptr_arith.c | 8 +- 91 files changed, 4986 insertions(+), 463 deletions(-) create mode 100644 Documentation/bpf/ringbuf.rst create mode 100644 include/linux/bpf-netns.h create mode 100644 include/net/netns/bpf.h create mode 100644 kernel/bpf/net_namespace.c create mode 100644 kernel/bpf/ringbuf.c create mode 100644 tools/lib/bpf/ringbuf.c create mode 100644 tools/testing/selftests/bpf/benchs/bench_ringbufs.c create mode 100755 tools/testing/selftests/bpf/benchs/run_bench_ringbufs.sh create mode 100644 tools/testing/selftests/bpf/prog_tests/ringbuf.c create mode 100644 tools/testing/selftests/bpf/prog_tests/ringbuf_multi.c create mode 100644 tools/testing/selftests/bpf/prog_tests/skb_helpers.c create mode 100644 tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c create mode 100644 tools/testing/selftests/bpf/progs/perfbuf_bench.c create mode 100644 tools/testing/selftests/bpf/progs/ringbuf_bench.c create mode 100644 tools/testing/selftests/bpf/progs/test_ringbuf.c create mode 100644 tools/testing/selftests/bpf/progs/test_ringbuf_multi.c create mode 100644 tools/testing/selftests/bpf/progs/test_skb_helpers.c create mode 100644 tools/testing/selftests/bpf/progs/test_skmsg_load_helpers.c create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_devmap_helpers.c create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_with_devmap_helpers.c