Hi David, The following pull-request contains BPF updates for your *net-next* tree.
The main changes are: 1) Implement two new kind of BPF maps, that is, queue and stack map along with new peek, push and pop operations, from Mauricio. 2) Add support for MSG_PEEK flag when redirecting into an ingress psock sk_msg queue, and add a new helper bpf_msg_push_data() for insert data into the message, from John. 3) Allow for BPF programs of type BPF_PROG_TYPE_CGROUP_SKB to use direct packet access for __skb_buff, from Song. 4) Use more lightweight barriers for walking perf ring buffer for libbpf and perf tool as well. Also, various fixes and improvements from verifier side, from Daniel. 5) Add per-symbol visibility for DSO in libbpf and hide by default global symbols such as netlink related functions, from Andrey. 6) Two improvements to nfp's BPF offload to check vNIC capabilities in case prog is shared with multiple vNICs and to protect against mis-initializing atomic counters, from Jakub. 7) Fix for bpftool to use 4 context mode for the nfp disassembler, also from Jakub. 8) Fix a return value comparison in test_libbpf.sh and add several bpftool improvements in bash completion, documentation of bpf fs restrictions and batch mode summary print, from Quentin. 9) Fix a file resource leak in BPF selftest's load_kallsyms() helper, from Peng. 10) Fix an unused variable warning in map_lookup_and_delete_elem(), from Alexei. 11) Fix bpf_skb_adjust_room() signature in BPF UAPI helper doc, from Nicolas. 12) Add missing executables to .gitignore in BPF selftests, from Anders. Please consider pulling these changes from: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git Thanks a lot! ---------------------------------------------------------------- The following changes since commit 2c59f06cc0442862d589c36bd2f29667f96c35e7: Merge branch 'net-Kernel-side-filtering-for-route-dumps' (2018-10-16 00:14: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 fe8ecccc10b3adc071de05ca7af728ca1a4ac9aa: tools: bpftool: fix completion for "bpftool map update" (2018-10-21 20:45:14 +0200) ---------------------------------------------------------------- Alexei Starovoitov (6): Merge branch 'nfp-improve-bpf-offload' Merge branch 'queue_stack_maps' Merge branch 'improve_perf_barriers' Merge branch 'cg_skb_direct_pkt_access' bpf: remove unused variable Merge branch 'misc-improvements' Anders Roxell (1): selftests/bpf: add missing executables to .gitignore Andrey Ignatov (1): libbpf: Per-symbol visibility for DSO Daniel Borkmann (11): bpf, tls: add tls header to tools infrastructure Merge branch 'bpf-sk-msg-peek' tools, perf: add and use optimized ring_buffer_{read_head, write_tail} helpers bpf, libbpf: use correct barriers in perf ring buffer walk Merge branch 'bpf-msg-push-data' ulp: remove uid and user_visible members bpf, verifier: fix register type dump in xadd and st bpf, verifier: reject xadd on flow key memory bpf, verifier: remove unneeded flow key in check_helper_mem_access bpf, verifier: avoid retpoline for map push/pop/peek operation bpf, libbpf: simplify and cleanup perf ring buffer walk Jakub Kicinski (3): nfp: bpf: protect against mis-initializing atomic counters nfp: bpf: double check vNIC capabilities after object sharing tools: bpftool: use 4 context mode for the NFP disasm John Fastabend (8): bpf: sockmap, fix skmsg recvmsg handler to track size correctly bpf: skmsg, improve sk_msg_used_element to work in cork context bpf: sockmap, support for msg_peek in sk_msg with redirect ingress bpf: sockmap, add msg_peek tests to test_sockmap bpf: skmsg, fix psock create on existing kcm/tls port bpf: sk_msg program helper bpf_msg_push_data bpf: libbpf support for msg_push_data bpf: test_sockmap add options to use msg_push_data Mauricio Vasquez B (7): bpf: rename stack trace map operations bpf/syscall: allow key to be null in map functions bpf/verifier: add ARG_PTR_TO_UNINIT_MAP_VALUE bpf: add queue and stack maps bpf: add MAP_LOOKUP_AND_DELETE_ELEM syscall Sync uapi/bpf.h to tools/include selftests/bpf: add test cases for queue and stack maps Nicolas Dichtel (1): bpf: fix doc of bpf_skb_adjust_room() in uapi Peng Hao (1): selftests/bpf: fix file resource leak in load_kallsyms Quentin Monnet (4): selftests/bpf: fix return value comparison for tests in test_libbpf.sh tools: bpftool: document restriction on '.' in names to pin in bpffs tools: bpftool: print nb of cmds to stdout (not stderr) for batch mode tools: bpftool: fix completion for "bpftool map update" Song Liu (2): bpf: add cg_skb_is_valid_access for BPF_PROG_TYPE_CGROUP_SKB bpf: add tests for direct packet access from CGROUP_SKB drivers/net/ethernet/netronome/nfp/bpf/main.h | 10 +- drivers/net/ethernet/netronome/nfp/bpf/offload.c | 32 ++- drivers/net/ethernet/netronome/nfp/bpf/verifier.c | 69 ++++- include/linux/bpf.h | 7 + include/linux/bpf_types.h | 4 +- include/linux/filter.h | 21 ++ include/linux/skmsg.h | 42 ++- include/net/tcp.h | 9 +- include/uapi/linux/bpf.h | 50 +++- kernel/bpf/Makefile | 2 +- kernel/bpf/cgroup.c | 6 + kernel/bpf/core.c | 3 + kernel/bpf/helpers.c | 43 +++ kernel/bpf/queue_stack_maps.c | 288 +++++++++++++++++++++ kernel/bpf/stackmap.c | 2 +- kernel/bpf/syscall.c | 91 ++++++- kernel/bpf/verifier.c | 85 +++++- net/bpf/test_run.c | 15 ++ net/core/filter.c | 176 ++++++++++++- net/core/sock_map.c | 11 +- net/ipv4/tcp_bpf.c | 41 ++- net/tls/tls_main.c | 2 - net/tls/tls_sw.c | 3 +- tools/arch/arm64/include/asm/barrier.h | 70 +++++ tools/arch/ia64/include/asm/barrier.h | 13 + tools/arch/powerpc/include/asm/barrier.h | 16 ++ tools/arch/s390/include/asm/barrier.h | 13 + tools/arch/sparc/include/asm/barrier_64.h | 13 + tools/arch/x86/include/asm/barrier.h | 14 + tools/bpf/bpftool/Documentation/bpftool-map.rst | 4 +- tools/bpf/bpftool/Documentation/bpftool-prog.rst | 8 +- tools/bpf/bpftool/bash-completion/bpftool | 2 +- tools/bpf/bpftool/common.c | 5 +- tools/bpf/bpftool/jit_disasm.c | 4 +- tools/bpf/bpftool/main.c | 3 +- tools/bpf/bpftool/main.h | 6 +- tools/bpf/bpftool/map_perf_ring.c | 10 +- tools/bpf/bpftool/prog.c | 14 +- tools/include/asm/barrier.h | 35 +++ tools/include/linux/ring_buffer.h | 73 ++++++ tools/include/uapi/linux/bpf.h | 50 +++- tools/include/uapi/linux/tls.h | 78 ++++++ tools/lib/bpf/Makefile | 1 + tools/lib/bpf/bpf.c | 12 + tools/lib/bpf/bpf.h | 120 +++++---- tools/lib/bpf/btf.h | 22 +- tools/lib/bpf/libbpf.c | 75 +++--- tools/lib/bpf/libbpf.h | 191 +++++++------- tools/perf/util/mmap.h | 15 +- tools/testing/selftests/bpf/.gitignore | 2 + tools/testing/selftests/bpf/Makefile | 5 +- tools/testing/selftests/bpf/bpf_helpers.h | 9 + tools/testing/selftests/bpf/test_libbpf.sh | 2 +- tools/testing/selftests/bpf/test_maps.c | 122 +++++++++ tools/testing/selftests/bpf/test_progs.c | 99 +++++++ tools/testing/selftests/bpf/test_queue_map.c | 4 + tools/testing/selftests/bpf/test_queue_stack_map.h | 59 +++++ tools/testing/selftests/bpf/test_sockmap.c | 238 ++++++++++++----- tools/testing/selftests/bpf/test_sockmap_kern.h | 97 +++++-- tools/testing/selftests/bpf/test_stack_map.c | 4 + tools/testing/selftests/bpf/test_verifier.c | 181 ++++++++++++- tools/testing/selftests/bpf/trace_helpers.c | 8 +- 62 files changed, 2315 insertions(+), 394 deletions(-) create mode 100644 kernel/bpf/queue_stack_maps.c create mode 100644 tools/include/linux/ring_buffer.h create mode 100644 tools/include/uapi/linux/tls.h create mode 100644 tools/testing/selftests/bpf/test_queue_map.c create mode 100644 tools/testing/selftests/bpf/test_queue_stack_map.h create mode 100644 tools/testing/selftests/bpf/test_stack_map.c