linux/tools/testing/selftests/bpf
Lorenz Bauer 1a1ad3c20a selftests: bpf: Pass program to bpf_prog_detach in flow_dissector
Calling bpf_prog_detach is incorrect, since it takes target_fd as
its argument. The intention here is to pass it as attach_bpf_fd,
so use bpf_prog_detach2 and pass zero for target_fd.

Fixes: 06716e04a0 ("selftests/bpf: Extend test_flow_dissector to cover link creation")
Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200629095630.7933-7-lmb@cloudflare.com
2020-06-30 10:46:39 -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 selftests: bpf: Pass program to bpf_prog_detach in flow_dissector 2020-06-30 10:46:39 -07:00
progs bpf, sockmap: Add ingres skb tests that utilize merge skbs 2020-06-28 08:33:28 -07:00
verifier bpf, selftests: Use bpf_probe_read_kernel 2020-06-02 21:04:04 +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
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
cgroup_helpers.c
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
flow_dissector_load.h
get_cgroup_id_user.c
Makefile selftests/bpf: Add a default $(CXX) value 2020-06-02 22:03:25 +02:00
netcnt_common.h
network_helpers.c bpf, testing: Add get{peer, sock}name selftests to test_progs 2020-05-19 11:32:04 -07:00
network_helpers.h bpf, testing: Add get{peer, sock}name selftests to test_progs 2020-05-19 11:32:04 -07:00
README.rst selftests/bpf: Add general instructions for test execution 2020-05-23 01:11:09 +02:00
tcp_client.py
tcp_server.py
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_bpftool_build.sh
test_btf.c selftests/bpf: Fix a couple of broken test_btf cases 2020-04-24 17:47:40 -07:00
test_btf.h
test_cgroup_storage.c
test_cpp.cpp
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
test_flow_dissector.c
test_flow_dissector.sh
test_ftrace.sh
test_iptunnel_common.h
test_kmod.sh
test_lirc_mode2.sh
test_lirc_mode2_user.c
test_lpm_map.c
test_lru_map.c
test_lwt_ip_encap.sh
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
test_netcnt.c
test_offload.py
test_progs.c selftests/bpf: Extract parse_num_list into generic testing_helpers.c 2020-05-13 12:19:38 -07:00
test_progs.h selftests/bpf: Extract parse_num_list into generic testing_helpers.c 2020-05-13 12:19:38 -07:00
test_select_reuseport_common.h
test_skb_cgroup_id.sh
test_skb_cgroup_id_user.c
test_sock.c
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
test_sock_fields.c
test_socket_cookie.c
test_sockmap.c bpf, sockmap: Add ingres skb tests that utilize merge skbs 2020-06-28 08:33:28 -07:00
test_stub.c
test_sysctl.c
test_tag.c
test_tc_edt.sh
test_tc_tunnel.sh
test_tcp_check_syncookie.sh
test_tcp_check_syncookie_user.c
test_tcpbpf.h
test_tcpbpf_user.c
test_tcpnotify.h
test_tcpnotify_user.c
test_tunnel.sh
test_verifier.c selftests/bpf: Use CAP_BPF and CAP_PERFMON in tests 2020-05-15 17:29:41 +02:00
test_verifier_log.c
test_xdp_meta.sh
test_xdp_redirect.sh
test_xdp_veth.sh
test_xdp_vlan.sh
test_xdp_vlan_mode_generic.sh
test_xdp_vlan_mode_native.sh
test_xdping.sh
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
with_addr.sh
with_tunnels.sh
xdping.c
xdping.h

==================
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.