Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
authorDavid S. Miller <davem@davemloft.net>
Tue, 16 Feb 2021 21:14:06 +0000 (13:14 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Feb 2021 21:14:06 +0000 (13:14 -0800)
Daniel Borkmann says:

====================
pull-request: bpf-next 2021-02-16

The following pull-request contains BPF updates for your *net-next* tree.

There's a small merge conflict between 7eeba1706eba ("tcp: Add receive timestamp
support for receive zerocopy.") from net-next tree and 9cacf81f8161 ("bpf: Remove
extra lock_sock for TCP_ZEROCOPY_RECEIVE") from bpf-next tree. Resolve as follows:

  [...]
                lock_sock(sk);
                err = tcp_zerocopy_receive(sk, &zc, &tss);
                err = BPF_CGROUP_RUN_PROG_GETSOCKOPT_KERN(sk, level, optname,
                                                          &zc, &len, err);
                release_sock(sk);
  [...]

We've added 116 non-merge commits during the last 27 day(s) which contain
a total of 156 files changed, 5662 insertions(+), 1489 deletions(-).

The main changes are:

1) Adds support of pointers to types with known size among global function
   args to overcome the limit on max # of allowed args, from Dmitrii Banshchikov.

2) Add bpf_iter for task_vma which can be used to generate information similar
   to /proc/pid/maps, from Song Liu.

3) Enable bpf_{g,s}etsockopt() from all sock_addr related program hooks. Allow
   rewriting bind user ports from BPF side below the ip_unprivileged_port_start
   range, both from Stanislav Fomichev.

4) Prevent recursion on fentry/fexit & sleepable programs and allow map-in-map
   as well as per-cpu maps for the latter, from Alexei Starovoitov.

5) Add selftest script to run BPF CI locally. Also enable BPF ringbuffer
   for sleepable programs, both from KP Singh.

6) Extend verifier to enable variable offset read/write access to the BPF
   program stack, from Andrei Matei.

7) Improve tc & XDP MTU handling and add a new bpf_check_mtu() helper to
   query device MTU from programs, from Jesper Dangaard Brouer.

8) Allow bpf_get_socket_cookie() helper also be called from [sleepable] BPF
   tracing programs, from Florent Revest.

9) Extend x86 JIT to pad JMPs with NOPs for helping image to converge when
   otherwise too many passes are required, from Gary Lin.

10) Verifier fixes on atomics with BPF_FETCH as well as function-by-function
    verification both related to zero-extension handling, from Ilya Leoshkevich.

11) Better kernel build integration of resolve_btfids tool, from Jiri Olsa.

12) Batch of AF_XDP selftest cleanups and small performance improvement
    for libbpf's xsk map redirect for newer kernels, from Björn Töpel.

13) Follow-up BPF doc and verifier improvements around atomics with
    BPF_FETCH, from Brendan Jackman.

14) Permit zero-sized data sections e.g. if ELF .rodata section contains
    read-only data from local variables, from Yonghong Song.

15) veth driver skb bulk-allocation for ndo_xdp_xmit, from Lorenzo Bianconi.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
17 files changed:
1  2 
Makefile
include/linux/indirect_call_wrapper.h
include/linux/netdevice.h
include/net/sock.h
include/net/tcp.h
kernel/bpf/cgroup.c
kernel/bpf/verifier.c
kernel/trace/bpf_trace.c
net/core/dev.c
net/core/filter.c
net/ipv4/af_inet.c
net/ipv4/tcp.c
net/ipv4/tcp_ipv4.c
net/ipv4/udp.c
net/ipv6/af_inet6.c
net/ipv6/tcp_ipv6.c
net/ipv6/udp.c

diff --cc Makefile
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
diff --cc net/ipv4/tcp.c
@@@ -4156,23 -4097,14 +4156,25 @@@ static int do_tcp_getsockopt(struct soc
                }
                if (copy_from_user(&zc, optval, len))
                        return -EFAULT;
 +              if (zc.reserved)
 +                      return -EINVAL;
 +              if (zc.msg_flags &  ~(TCP_VALID_ZC_MSG_FLAGS))
 +                      return -EINVAL;
                lock_sock(sk);
 -              err = tcp_zerocopy_receive(sk, &zc);
 +              err = tcp_zerocopy_receive(sk, &zc, &tss);
+               err = BPF_CGROUP_RUN_PROG_GETSOCKOPT_KERN(sk, level, optname,
+                                                         &zc, &len, err);
                release_sock(sk);
 -              if (len >= offsetofend(struct tcp_zerocopy_receive, err))
 -                      goto zerocopy_rcv_sk_err;
 +              if (len >= offsetofend(struct tcp_zerocopy_receive, msg_flags))
 +                      goto zerocopy_rcv_cmsg;
                switch (len) {
 +              case offsetofend(struct tcp_zerocopy_receive, msg_flags):
 +                      goto zerocopy_rcv_cmsg;
 +              case offsetofend(struct tcp_zerocopy_receive, msg_controllen):
 +              case offsetofend(struct tcp_zerocopy_receive, msg_control):
 +              case offsetofend(struct tcp_zerocopy_receive, flags):
 +              case offsetofend(struct tcp_zerocopy_receive, copybuf_len):
 +              case offsetofend(struct tcp_zerocopy_receive, copybuf_address):
                case offsetofend(struct tcp_zerocopy_receive, err):
                        goto zerocopy_rcv_sk_err;
                case offsetofend(struct tcp_zerocopy_receive, inq):
Simple merge
diff --cc net/ipv4/udp.c
Simple merge
Simple merge
Simple merge
diff --cc net/ipv6/udp.c
Simple merge