[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210116012922.17823-1-daniel@iogearbox.net>
Date: Sat, 16 Jan 2021 02:29:22 +0100
From: Daniel Borkmann <daniel@...earbox.net>
To: davem@...emloft.net
Cc: kuba@...nel.org, daniel@...earbox.net, ast@...nel.org,
andrii.nakryiko@...il.com, netdev@...r.kernel.org,
bpf@...r.kernel.org
Subject: pull-request: bpf-next 2021-01-16
Hi David, hi Jakub,
The following pull-request contains BPF updates for your *net-next* tree.
We've added 41 non-merge commits during the last 7 day(s) which contain
a total of 100 files changed, 2565 insertions(+), 741 deletions(-).
The main changes are:
1) Extend atomic operations to the BPF instruction set along with x86-64 JIT support,
that is, atomic{,64}_{xchg,cmpxchg,fetch_{add,and,or,xor}}, from Brendan Jackman.
2) Add support for using kernel module global variables (__ksym externs in BPF
programs) retrieved via module's BTF, from Andrii Nakryiko.
3) Generalize BPF stackmap's buildid retrieval and add support to have buildid
stored in mmap2 event for perf, from Jiri Olsa.
4) Various fixes for cross-building BPF sefltests out-of-tree which then will
unblock wider automated testing on ARM hardware, from Jean-Philippe Brucker.
5) Allow to retrieve SOL_SOCKET opts from sock_addr progs, from Daniel Borkmann.
6) Clean up driver's XDP buffer init and split into two helpers to init per-
descriptor and non-changing fields during processing, from Lorenzo Bianconi.
7) Minor misc improvements to libbpf & bpftool, from Ian Rogers.
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:
Alexander Duyck, Andrii Nakryiko, Björn Töpel, Camelia Groza, Hao Luo,
Jesper Dangaard Brouer, John Fastabend, kernel test robot, KP Singh,
Marcin Wojtas, Martin Habets, Martin KaFai Lau, Peter Zijlstra (Intel),
Shay Agroskin, Song Liu, Yonghong Song
----------------------------------------------------------------
The following changes since commit 833d22f2f922bbee6430e558417af060db6bbe9c:
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net (2021-01-08 13:28:00 -0800)
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 eed6a9a9571b94acdad98fab2fbf6a92199edf69:
Merge branch 'perf: Add mmap2 build id support' (2021-01-14 19:29:59 -0800)
----------------------------------------------------------------
Alexei Starovoitov (3):
Merge branch 'Support kernel module ksym variables'
Merge branch 'Atomics for eBPF'
Merge branch 'perf: Add mmap2 build id support'
Andrii Nakryiko (12):
libbpf: Add user-space variants of BPF_CORE_READ() family of macros
libbpf: Add non-CO-RE variants of BPF_CORE_READ() macro family
selftests/bpf: Add tests for user- and non-CO-RE BPF_CORE_READ() variants
libbpf: Clarify kernel type use with USER variants of CORE reading macros
bpf: Add bpf_patch_call_args prototype to include/linux/bpf.h
bpf: Avoid warning when re-casting __bpf_call_base into __bpf_call_base_args
bpf: Declare __bpf_free_used_maps() unconditionally
selftests/bpf: Sync RCU before unloading bpf_testmod
bpf: Support BPF ksym variables in kernel modules
libbpf: Support kernel module ksym externs
selftests/bpf: Test kernel module ksym externs
Merge branch 'selftests/bpf: Some build fixes'
Brendan Jackman (13):
bpf: Clarify return value of probe str helpers
bpf: Fix a verifier message for alloc size helper arg
bpf: x86: Factor out emission of ModR/M for *(reg + off)
bpf: x86: Factor out emission of REX byte
bpf: x86: Factor out a lookup table for some ALU opcodes
bpf: Rename BPF_XADD and prepare to encode other atomics in .imm
bpf: Move BPF_STX reserved field check into BPF_STX verifier code
bpf: Add BPF_FETCH field / create atomic_fetch_add instruction
bpf: Add instructions for atomic_[cmp]xchg
bpf: Pull out a macro for interpreting atomic ALU operations
bpf: Add bitwise atomic instructions
bpf: Add tests for new BPF atomic operations
bpf: Document new atomic instructions
Daniel Borkmann (2):
bpf: Allow to retrieve sol_socket opts from sock_addr progs
bpf: Extend bind v4/v6 selftests for mark/prio/bindtoifindex
Ian Rogers (2):
bpf, libbpf: Avoid unused function warning on bpf_tail_call_static
tools/bpftool: Add -Wall when building BPF programs
Jean-Philippe Brucker (5):
selftests/bpf: Enable cross-building
selftests/bpf: Fix out-of-tree build
selftests/bpf: Move generated test files to $(TEST_GEN_FILES)
selftests/bpf: Fix installation of urandom_read
selftests/bpf: Install btf_dump test cases
Jiri Olsa (3):
bpf: Move stack_map_get_build_id into lib
bpf: Add size arg to build_id_parse function
perf: Add build id data in mmap2 event
Leah Neukirchen (1):
bpf: Remove unnecessary <argp.h> include from preload/iterators
Lorenzo Bianconi (2):
net, xdp: Introduce xdp_init_buff utility routine
net, xdp: Introduce xdp_prepare_buff utility routine
Menglong Dong (1):
selftests/bpf: Remove duplicate include in test_lsm
Zheng Yongjun (1):
bpf: Replace fput with sockfd_put in sock map
Documentation/networking/filter.rst | 61 ++++-
arch/arm/net/bpf_jit_32.c | 7 +-
arch/arm64/net/bpf_jit_comp.c | 16 +-
arch/mips/net/ebpf_jit.c | 11 +-
arch/powerpc/net/bpf_jit_comp64.c | 25 ++-
arch/riscv/net/bpf_jit_comp32.c | 20 +-
arch/riscv/net/bpf_jit_comp64.c | 16 +-
arch/s390/net/bpf_jit_comp.c | 27 ++-
arch/sparc/net/bpf_jit_comp_64.c | 17 +-
arch/x86/net/bpf_jit_comp.c | 217 ++++++++++++------
arch/x86/net/bpf_jit_comp32.c | 6 +-
drivers/net/ethernet/amazon/ena/ena_netdev.c | 10 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 9 +-
drivers/net/ethernet/cavium/thunder/nicvf_main.c | 12 +-
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 10 +-
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 14 +-
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 18 +-
drivers/net/ethernet/intel/ice/ice_txrx.c | 15 +-
drivers/net/ethernet/intel/igb/igb_main.c | 18 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 19 +-
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 19 +-
drivers/net/ethernet/marvell/mvneta.c | 10 +-
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 +-
drivers/net/ethernet/mellanox/mlx4/en_rx.c | 9 +-
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 8 +-
drivers/net/ethernet/netronome/nfp/bpf/jit.c | 14 +-
drivers/net/ethernet/netronome/nfp/bpf/main.h | 4 +-
drivers/net/ethernet/netronome/nfp/bpf/verifier.c | 15 +-
.../net/ethernet/netronome/nfp/nfp_net_common.c | 12 +-
drivers/net/ethernet/qlogic/qede/qede_fp.c | 9 +-
drivers/net/ethernet/sfc/rx.c | 10 +-
drivers/net/ethernet/socionext/netsec.c | 9 +-
drivers/net/ethernet/ti/cpsw.c | 18 +-
drivers/net/ethernet/ti/cpsw_new.c | 18 +-
drivers/net/hyperv/netvsc_bpf.c | 8 +-
drivers/net/tun.c | 12 +-
drivers/net/veth.c | 14 +-
drivers/net/virtio_net.c | 18 +-
drivers/net/xen-netfront.c | 10 +-
include/linux/bpf.h | 18 +-
include/linux/bpf_verifier.h | 3 +
include/linux/btf.h | 3 +
include/linux/buildid.h | 12 +
include/linux/filter.h | 27 ++-
include/net/xdp.h | 19 ++
include/uapi/linux/bpf.h | 20 +-
include/uapi/linux/perf_event.h | 42 +++-
kernel/bpf/btf.c | 31 ++-
kernel/bpf/core.c | 90 +++++++-
kernel/bpf/disasm.c | 43 +++-
kernel/bpf/preload/iterators/iterators.c | 2 +-
kernel/bpf/stackmap.c | 143 +-----------
kernel/bpf/verifier.c | 231 +++++++++++++++----
kernel/events/core.c | 32 ++-
lib/Makefile | 3 +-
lib/buildid.c | 149 +++++++++++++
lib/test_bpf.c | 14 +-
net/bpf/test_run.c | 11 +-
net/core/dev.c | 24 +-
net/core/filter.c | 25 ++-
net/core/sock_map.c | 2 +-
samples/bpf/bpf_insn.h | 4 +-
samples/bpf/cookie_uid_helper_example.c | 8 +-
samples/bpf/sock_example.c | 2 +-
samples/bpf/test_cgrp2_attach.c | 5 +-
tools/bpf/bpftool/Makefile | 2 +-
tools/include/linux/filter.h | 24 +-
tools/include/uapi/linux/bpf.h | 20 +-
tools/lib/bpf/bpf_core_read.h | 169 ++++++++++----
tools/lib/bpf/bpf_helpers.h | 2 +-
tools/lib/bpf/libbpf.c | 50 +++--
tools/testing/selftests/bpf/Makefile | 60 +++--
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 3 +
tools/testing/selftests/bpf/prog_tests/atomics.c | 246 +++++++++++++++++++++
.../selftests/bpf/prog_tests/btf_map_in_map.c | 33 ---
.../selftests/bpf/prog_tests/cgroup_attach_multi.c | 4 +-
.../selftests/bpf/prog_tests/core_read_macros.c | 64 ++++++
.../selftests/bpf/prog_tests/ksyms_module.c | 31 +++
tools/testing/selftests/bpf/prog_tests/test_lsm.c | 1 -
tools/testing/selftests/bpf/progs/atomics.c | 154 +++++++++++++
tools/testing/selftests/bpf/progs/bind4_prog.c | 42 +++-
tools/testing/selftests/bpf/progs/bind6_prog.c | 42 +++-
.../selftests/bpf/progs/test_core_read_macros.c | 50 +++++
.../selftests/bpf/progs/test_ksyms_module.c | 26 +++
tools/testing/selftests/bpf/test_cgroup_storage.c | 2 +-
tools/testing/selftests/bpf/test_progs.c | 11 +
tools/testing/selftests/bpf/test_progs.h | 1 +
tools/testing/selftests/bpf/verifier/atomic_and.c | 77 +++++++
.../selftests/bpf/verifier/atomic_cmpxchg.c | 96 ++++++++
.../selftests/bpf/verifier/atomic_fetch_add.c | 106 +++++++++
tools/testing/selftests/bpf/verifier/atomic_or.c | 77 +++++++
tools/testing/selftests/bpf/verifier/atomic_xchg.c | 46 ++++
tools/testing/selftests/bpf/verifier/atomic_xor.c | 77 +++++++
tools/testing/selftests/bpf/verifier/ctx.c | 7 +-
.../selftests/bpf/verifier/direct_packet_access.c | 4 +-
tools/testing/selftests/bpf/verifier/leak_ptr.c | 10 +-
tools/testing/selftests/bpf/verifier/meta_access.c | 4 +-
tools/testing/selftests/bpf/verifier/unpriv.c | 3 +-
.../selftests/bpf/verifier/value_illegal_alu.c | 2 +-
tools/testing/selftests/bpf/verifier/xadd.c | 18 +-
100 files changed, 2565 insertions(+), 741 deletions(-)
create mode 100644 include/linux/buildid.h
create mode 100644 lib/buildid.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/atomics.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/prog_tests/ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/progs/atomics.c
create mode 100644 tools/testing/selftests/bpf/progs/test_core_read_macros.c
create mode 100644 tools/testing/selftests/bpf/progs/test_ksyms_module.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_and.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_cmpxchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_fetch_add.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_or.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xchg.c
create mode 100644 tools/testing/selftests/bpf/verifier/atomic_xor.c
Powered by blists - more mailing lists