Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
authorDavid S. Miller <davem@davemloft.net>
Tue, 11 Dec 2018 02:00:43 +0000 (18:00 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 11 Dec 2018 02:00:43 +0000 (18:00 -0800)
Daniel Borkmann says:

====================
pull-request: bpf-next 2018-12-11

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

It has three minor merge conflicts, resolutions:

1) tools/testing/selftests/bpf/test_verifier.c

 Take first chunk with alignment_prevented_execution.

2) net/core/filter.c

  [...]
  case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
  case bpf_ctx_range(struct __sk_buff, wire_len):
        return false;
  [...]

3) include/uapi/linux/bpf.h

  Take the second chunk for the two cases each.

The main changes are:

1) Add support for BPF line info via BTF and extend libbpf as well
   as bpftool's program dump to annotate output with BPF C code to
   facilitate debugging and introspection, from Martin.

2) Add support for BPF_ALU | BPF_ARSH | BPF_{K,X} in interpreter
   and all JIT backends, from Jiong.

3) Improve BPF test coverage on archs with no efficient unaligned
   access by adding an "any alignment" flag to the BPF program load
   to forcefully disable verifier alignment checks, from David.

4) Add a new bpf_prog_test_run_xattr() API to libbpf which allows for
   proper use of BPF_PROG_TEST_RUN with data_out, from Lorenz.

5) Extend tc BPF programs to use a new __sk_buff field called wire_len
   for more accurate accounting of packets going to wire, from Petar.

6) Improve bpftool to allow dumping the trace pipe from it and add
   several improvements in bash completion and map/prog dump,
   from Quentin.

7) Optimize arm64 BPF JIT to always emit movn/movk/movk sequence for
   kernel addresses and add a dedicated BPF JIT backend allocator,
   from Ard.

8) Add a BPF helper function for IR remotes to report mouse movements,
   from Sean.

9) Various cleanups in BPF prog dump e.g. to make UAPI bpf_prog_info
   member naming consistent with existing conventions, from Yonghong
   and Song.

10) Misc cleanups and improvements in allowing to pass interface name
    via cmdline for xdp1 BPF example, from Matteo.

11) Fix a potential segfault in BPF sample loader's kprobes handling,
    from Daniel T.

12) Fix SPDX license in libbpf's README.rst, from Andrey.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
12 files changed:
1  2 
arch/powerpc/net/bpf_jit_comp64.c
include/linux/filter.h
include/uapi/linux/bpf.h
kernel/bpf/btf.c
kernel/bpf/verifier.c
net/bpf/test_run.c
net/core/filter.c
tools/bpf/bpftool/btf_dumper.c
tools/include/uapi/linux/bpf.h
tools/testing/selftests/bpf/bpf_helpers.h
tools/testing/selftests/bpf/test_btf.c
tools/testing/selftests/bpf/test_verifier.c

Simple merge
Simple merge
@@@ -2245,14 -2250,15 +2254,15 @@@ union bpf_attr 
   *            This helper is available only if the kernel was compiled with
   *            **CONFIG_NET** configuration option.
   *    Return
 - *            A pointer to **struct bpf_sock**, or **NULL** in case of
 - *            failure. For sockets with reuseport option, **struct bpf_sock**
 - *            return is from **reuse->socks**\ [] using hash of the packet.
 + *            Pointer to *struct bpf_sock*, or NULL in case of failure.
 + *            For sockets with reuseport option, the *struct bpf_sock*
 + *            result is from reuse->socks[] using the hash of the tuple.
   *
-  * int bpf_sk_release(struct bpf_sock *sk)
+  * int bpf_sk_release(struct bpf_sock *sock)
   *    Description
-  *            Release the reference held by *sock*. *sock* must be a non-NULL
-  *            pointer that was returned from bpf_sk_lookup_xxx\ ().
+  *            Release the reference held by *sock*. *sock* must be a
+  *            non-**NULL** pointer that was returned from
+  *            **bpf_sk_lookup_xxx**\ ().
   *    Return
   *            0 on success, or a negative error in case of failure.
   *
@@@ -2494,8 -2516,9 +2529,9 @@@ struct __sk_buff 
        /* ... here. */
  
        __u32 data_meta;
 -      struct bpf_flow_keys *flow_keys;
 +      __bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
        __u64 tstamp;
+       __u32 wire_len;
  };
  
  struct bpf_tunnel_key {
Simple merge
Simple merge
Simple merge
@@@ -5771,9 -5770,10 +5771,10 @@@ static bool sk_filter_is_valid_access(i
        case bpf_ctx_range(struct __sk_buff, data):
        case bpf_ctx_range(struct __sk_buff, data_meta):
        case bpf_ctx_range(struct __sk_buff, data_end):
 -      case bpf_ctx_range(struct __sk_buff, flow_keys):
 +      case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
        case bpf_ctx_range_till(struct __sk_buff, family, local_port):
        case bpf_ctx_range(struct __sk_buff, tstamp):
+       case bpf_ctx_range(struct __sk_buff, wire_len):
                return false;
        }
  
@@@ -5797,7 -5797,8 +5798,8 @@@ static bool cg_skb_is_valid_access(int 
        switch (off) {
        case bpf_ctx_range(struct __sk_buff, tc_classid):
        case bpf_ctx_range(struct __sk_buff, data_meta):
 -      case bpf_ctx_range(struct __sk_buff, flow_keys):
 +      case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
+       case bpf_ctx_range(struct __sk_buff, wire_len):
                return false;
        case bpf_ctx_range(struct __sk_buff, data):
        case bpf_ctx_range(struct __sk_buff, data_end):
@@@ -5842,8 -5843,9 +5844,9 @@@ static bool lwt_is_valid_access(int off
        case bpf_ctx_range(struct __sk_buff, tc_classid):
        case bpf_ctx_range_till(struct __sk_buff, family, local_port):
        case bpf_ctx_range(struct __sk_buff, data_meta):
 -      case bpf_ctx_range(struct __sk_buff, flow_keys):
 +      case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
        case bpf_ctx_range(struct __sk_buff, tstamp):
+       case bpf_ctx_range(struct __sk_buff, wire_len):
                return false;
        }
  
@@@ -6272,8 -6274,9 +6275,9 @@@ static bool sk_skb_is_valid_access(int 
        switch (off) {
        case bpf_ctx_range(struct __sk_buff, tc_classid):
        case bpf_ctx_range(struct __sk_buff, data_meta):
 -      case bpf_ctx_range(struct __sk_buff, flow_keys):
 +      case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
        case bpf_ctx_range(struct __sk_buff, tstamp):
+       case bpf_ctx_range(struct __sk_buff, wire_len):
                return false;
        }
  
Simple merge
@@@ -2494,8 -2515,9 +2528,9 @@@ struct __sk_buff 
        /* ... here. */
  
        __u32 data_meta;
 -      struct bpf_flow_keys *flow_keys;
 +      __bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
        __u64 tstamp;
+       __u32 wire_len;
  };
  
  struct bpf_tunnel_key {