linux/tools/testing/selftests/bpf
David S. Miller f91c031e65 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
Daniel Borkmann says:

====================
pull-request: bpf-next 2020-07-04

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

We've added 73 non-merge commits during the last 17 day(s) which contain
a total of 106 files changed, 5233 insertions(+), 1283 deletions(-).

The main changes are:

1) bpftool ability to show PIDs of processes having open file descriptors
   for BPF map/program/link/BTF objects, relying on BPF iterator progs
   to extract this info efficiently, from Andrii Nakryiko.

2) Addition of BPF iterator progs for dumping TCP and UDP sockets to
   seq_files, from Yonghong Song.

3) Support access to BPF map fields in struct bpf_map from programs
   through BTF struct access, from Andrey Ignatov.

4) Add a bpf_get_task_stack() helper to be able to dump /proc/*/stack
   via seq_file from BPF iterator progs, from Song Liu.

5) Make SO_KEEPALIVE and related options available to bpf_setsockopt()
   helper, from Dmitry Yakunin.

6) Optimize BPF sk_storage selection of its caching index, from Martin
   KaFai Lau.

7) Removal of redundant synchronize_rcu()s from BPF map destruction which
   has been a historic leftover, from Alexei Starovoitov.

8) Several improvements to test_progs to make it easier to create a shell
   loop that invokes each test individually which is useful for some CIs,
   from Jesper Dangaard Brouer.

9) Fix bpftool prog dump segfault when compiled without skeleton code on
   older clang versions, from John Fastabend.

10) Bunch of cleanups and minor improvements, from various others.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
2020-07-04 17:48:34 -07:00
..
benchs bpf: Add BPF ringbuf and perf buffer benchmarks 2020-06-01 14:38:22 -07:00
gnu
map_tests .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
prog_tests Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2020-07-04 17:48:34 -07:00
progs Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2020-07-04 17:48:34 -07:00
verifier selftests/bpf: Test access to bpf map pointer 2020-06-22 22:22:59 +02:00
.gitignore selftests/bpf: Add benchmark runner infrastructure 2020-05-13 12:19:38 -07:00
bench.c bpf: Add BPF ringbuf and perf buffer benchmarks 2020-06-01 14:38:22 -07:00
bench.h selftests/bpf: Add benchmark runner infrastructure 2020-05-13 12:19:38 -07:00
bpf_legacy.h selftests/bpf: samples/bpf: Split off legacy stuff from bpf_helpers.h 2019-10-08 23:16:03 +02:00
bpf_rand.h
bpf_rlimit.h
bpf_tcp_helpers.h libbpf: Merge selftests' bpf_trace_helpers.h into libbpf's bpf_tracing.h 2020-03-02 16:25:14 -08:00
bpf_util.h selftests: Use consistent include paths for libbpf 2020-01-20 16:37:45 -08:00
cgroup_helpers.c selftests/bpf: Correct path to include msg + path 2019-10-03 17:21:57 +02:00
cgroup_helpers.h
config selftests/bpf: CONFIG_LIRC required for test_lirc_mode2.sh 2020-05-23 01:12:31 +02:00
flow_dissector_load.c selftests/bpf: run flow dissector tests in skb-less mode 2019-04-23 18:36:34 +02:00
flow_dissector_load.h selftests/bpf: properly return error from bpf_flow_load 2019-04-23 18:36:34 +02:00
get_cgroup_id_user.c
Makefile selftests/bpf: Allow substituting custom vmlinux.h for selftests build 2020-06-30 15:50:11 -07:00
netcnt_common.h
network_helpers.c bpf: selftests: A few improvements to network_helpers.c 2020-07-02 16:09:01 +02:00
network_helpers.h bpf: selftests: A few improvements to network_helpers.c 2020-07-02 16:09:01 +02:00
README.rst selftests/bpf: Add general instructions for test execution 2020-05-23 01:11:09 +02:00
tcp_client.py selftests/bpf: use localhost in tcp_{server,client}.py 2019-02-04 21:29:27 +01:00
tcp_server.py selftests/bpf: use localhost in tcp_{server,client}.py 2019-02-04 21:29:27 +01:00
test_bpftool_build.sh selftests, bpftool: Skip the build test if not in tree 2019-11-24 16:58:45 -08:00
test_bpftool.py selftests/bpf: Add test for "bpftool feature" command 2020-02-26 18:34:34 +01:00
test_bpftool.sh selftests/bpf: Add test for "bpftool feature" command 2020-02-26 18:34:34 +01:00
test_btf.c selftests/bpf: Fix a couple of broken test_btf cases 2020-04-24 17:47:40 -07:00
test_btf.h bpf: Refactor BTF encoding macro to test_btf.h 2019-04-27 09:07:05 -07:00
test_cgroup_storage.c selftests/bpf: fix test_cgroup_storage on s390 2019-08-21 16:55:01 +02:00
test_cpp.cpp selftests: Use consistent include paths for libbpf 2020-01-20 16:37:45 -08:00
test_current_pid_tgid_new_ns.c tools/testing/selftests/bpf: Add self-tests for new helper bpf_get_ns_current_pid_tgid. 2020-03-12 17:40:47 -07:00
test_dev_cgroup.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
test_flow_dissector.c selftests: bpf: remove duplicated include 2019-01-29 00:09:26 +01:00
test_flow_dissector.sh selftests/bpf: Add test based on port range for BPF flow dissector 2020-01-27 11:25:07 +01:00
test_ftrace.sh selftests/bpf: Test function_graph tracer and bpf trampoline together 2019-12-11 15:19:29 -08:00
test_iptunnel_common.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
test_kmod.sh
test_lirc_mode2_user.c media: bpf: add bpf function to report mouse movement 2018-12-09 14:37:18 -08:00
test_lirc_mode2.sh media: bpf: add bpf function to report mouse movement 2018-12-09 14:37:18 -08:00
test_lpm_map.c bpf: lpm_trie: check left child of last leftmost node for NULL 2019-06-11 13:52:37 +02:00
test_lru_map.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
test_lwt_ip_encap.sh selftests/bpf: More compatible nc options in test_lwt_ip_encap 2019-10-08 23:59:22 +02:00
test_lwt_seg6local.sh
test_maps.c selftests/bpf: Add tests for write-only stacks/queues 2020-06-01 14:38:22 -07:00
test_maps.h bpf: Add BPF_MAP_TYPE_SK_STORAGE test to test_maps 2019-04-27 09:07:05 -07:00
test_netcnt.c selftests/bpf: fix incorrect users of create_and_get_cgroup 2019-01-07 13:15:55 -08:00
test_offload.py selftests: bpf: log direct file writes 2019-11-06 09:59:58 -08:00
test_progs.c bpf: selftests: Restore netns after each test 2020-07-02 16:09:01 +02:00
test_progs.h bpf: selftests: Restore netns after each test 2020-07-02 16:09:01 +02:00
test_select_reuseport_common.h
test_skb_cgroup_id_user.c selftests/bpf: Don't hard-code root cgroup id 2019-12-04 17:56:22 -08:00
test_skb_cgroup_id.sh kselftests/bpf: use ping6 as the default ipv6 ping binary if it exists 2018-10-31 23:05:30 +01:00
test_sock_addr.c selftests/bpf: Test narrow loads for bpf_sock_addr.user_port 2020-05-14 18:30:57 -07:00
test_sock_addr.sh kselftests/bpf: use ping6 as the default ipv6 ping binary if it exists 2018-10-31 23:05:30 +01:00
test_sock_fields.c selftests: bpf: enable hi32 randomization for all tests 2019-05-24 18:58:37 -07:00
test_sock.c selftests: Use consistent include paths for libbpf 2020-01-20 16:37:45 -08:00
test_socket_cookie.c selftests/bpf: convert socket_cookie test to sk storage 2019-06-15 01:21:59 +02:00
test_sockmap.c bpf, selftests: Add test for ktls with skb bpf ingress policy 2020-06-01 14:48:32 -07:00
test_stub.c selftests/bpf: Integrate verbose verifier log into test_progs 2019-11-24 16:58:45 -08:00
test_sysctl.c selftests: Use consistent include paths for libbpf 2020-01-20 16:37:45 -08:00
test_tag.c
test_tc_edt.sh selftests/bpf: More compatible nc options in test_tc_edt 2019-10-18 22:33:57 +02:00
test_tc_tunnel.sh selftests, bpf: Fix test_tc_tunnel hanging 2019-11-18 21:31:49 +01:00
test_tcp_check_syncookie_user.c selftests/bpf: add test for bpf_tcp_gen_syncookie 2019-07-30 21:03:05 -07:00
test_tcp_check_syncookie.sh selftests/bpf: add test for bpf_tcp_gen_syncookie 2019-07-30 21:03:05 -07:00
test_tcpbpf_user.c selftests/bpf: De-flake test_tcpbpf 2019-12-04 18:01:05 -08:00
test_tcpbpf.h selftests/bpf: De-flake test_tcpbpf 2019-12-04 18:01:05 -08:00
test_tcpnotify_user.c selftests/bpf: switch test_tcpnotify to perf_buffer API 2019-07-23 16:05:42 -07:00
test_tcpnotify.h selftests/bpf: add a test case for sock_ops perf-event notification 2018-11-09 09:40:17 +01:00
test_tunnel.sh selftests/bpf: fail test_tunnel.sh if subtests fail 2019-05-28 11:08:57 +02:00
test_verifier_log.c
test_verifier.c selftests/bpf: Use CAP_BPF and CAP_PERFMON in tests 2020-05-15 17:29:41 +02:00
test_xdp_meta.sh
test_xdp_redirect.sh
test_xdp_veth.sh selftests, bpf: Add test for veth native XDP 2019-06-24 18:18:30 -07:00
test_xdp_vlan_mode_generic.sh selftests/bpf: add wrapper scripts for test_xdp_vlan.sh 2019-08-05 11:17:40 -07:00
test_xdp_vlan_mode_native.sh selftests/bpf: add wrapper scripts for test_xdp_vlan.sh 2019-08-05 11:17:40 -07:00
test_xdp_vlan.sh selftests/bpf: reduce time to execute test_xdp_vlan.sh 2019-08-05 11:17:40 -07:00
test_xdping.sh selftests/bpf: measure RTT from xdp using xdping 2019-05-31 19:53:45 -07:00
testing_helpers.c selftests/bpf: Extract parse_num_list into generic testing_helpers.c 2020-05-13 12:19:38 -07:00
testing_helpers.h selftests/bpf: Extract parse_num_list into generic testing_helpers.c 2020-05-13 12:19:38 -07:00
trace_helpers.c samples, bpf: Move read_trace_pipe to trace_helpers 2020-03-23 22:27:51 +01:00
trace_helpers.h samples, bpf: Move read_trace_pipe to trace_helpers 2020-03-23 22:27:51 +01:00
urandom_read.c selftests: bpf: modify urandom_read and link it non-statically 2019-03-21 19:37:30 -07:00
with_addr.sh
with_tunnels.sh
xdping.c selftests: bpf: correct perror strings 2019-11-28 22:40:30 -08:00
xdping.h selftests/bpf: measure RTT from xdp using xdping 2019-05-31 19:53:45 -07:00

==================
BPF Selftest Notes
==================
General instructions on running selftests can be found in
`Documentation/bpf/bpf_devel_QA.rst`_.

Additional information about selftest failures are
documented here.

bpf_iter test failures with clang/llvm 10.0.0
=============================================

With clang/llvm 10.0.0, the following two bpf_iter tests failed:
  * ``bpf_iter/ipv6_route``
  * ``bpf_iter/netlink``

The symptom for ``bpf_iter/ipv6_route`` looks like

.. code-block:: c

  2: (79) r8 = *(u64 *)(r1 +8)
  ...
  14: (bf) r2 = r8
  15: (0f) r2 += r1
  ; BPF_SEQ_PRINTF(seq, "%pi6 %02x ", &rt->fib6_dst.addr, rt->fib6_dst.plen);
  16: (7b) *(u64 *)(r8 +64) = r2
  only read is supported

The symptom for ``bpf_iter/netlink`` looks like

.. code-block:: c

  ; struct netlink_sock *nlk = ctx->sk;
  2: (79) r7 = *(u64 *)(r1 +8)
  ...
  15: (bf) r2 = r7
  16: (0f) r2 += r1
  ; BPF_SEQ_PRINTF(seq, "%pK %-3d ", s, s->sk_protocol);
  17: (7b) *(u64 *)(r7 +0) = r2
  only read is supported

This is due to a llvm BPF backend bug. The fix 
  https://reviews.llvm.org/D78466
has been pushed to llvm 10.x release branch and will be
available in 10.0.1. The fix is available in llvm 11.0.0 trunk.