Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tools/bpf: fix test_sock and test_sock_addr.sh failure

The bpf selftests test_sock and test_sock_addr.sh failed
in my test machine. The failure looks like:
$ ./test_sock
Test case: bind4 load with invalid access: src_ip6 .. [PASS]
Test case: bind4 load with invalid access: mark .. [PASS]
Test case: bind6 load with invalid access: src_ip4 .. [PASS]
Test case: sock_create load with invalid access: src_port .. [PASS]
Test case: sock_create load w/o expected_attach_type (compat mode) .. [FAIL]
Test case: sock_create load w/ expected_attach_type .. [FAIL]
Test case: attach type mismatch bind4 vs bind6 .. [FAIL]
...
Summary: 4 PASSED, 12 FAILED
$ ./test_sock_addr.sh
Wait for testing IPv4/IPv6 to become available .....
ERROR: Timeout waiting for test IP to become available.

In test_sock, bpf program loads failed due to hitting memlock limits.
In test_sock_addr.sh, my test machine is a ipv6 only test box and using
"ping" without specifying address family for an ipv6 address does not work.

This patch fixed the issue by including header bpf_rlimit.h in test_sock.c
and test_sock_addr.c, and specifying address family for ping command.

Cc: Andrey Ignatov <rdna@fb.com>
Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Andrey Ignatov <rdna@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>

authored by

Yonghong Song and committed by
Daniel Borkmann
0a0a7e00 3a38bb98

+4 -2
+1
tools/testing/selftests/bpf/test_sock.c
··· 13 13 #include <bpf/bpf.h> 14 14 15 15 #include "cgroup_helpers.h" 16 + #include "bpf_rlimit.h" 16 17 17 18 #ifndef ARRAY_SIZE 18 19 # define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+1
tools/testing/selftests/bpf/test_sock_addr.c
··· 15 15 #include <bpf/libbpf.h> 16 16 17 17 #include "cgroup_helpers.h" 18 + #include "bpf_rlimit.h" 18 19 19 20 #define CG_PATH "/foo" 20 21 #define CONNECT4_PROG_PATH "./connect4_prog.o"
+2 -2
tools/testing/selftests/bpf/test_sock_addr.sh
··· 4 4 5 5 ping_once() 6 6 { 7 - ping -q -c 1 -W 1 ${1%%/*} >/dev/null 2>&1 7 + ping -${1} -q -c 1 -W 1 ${2%%/*} >/dev/null 2>&1 8 8 } 9 9 10 10 wait_for_ip() ··· 13 13 echo -n "Wait for testing IPv4/IPv6 to become available " 14 14 for _i in $(seq ${MAX_PING_TRIES}); do 15 15 echo -n "." 16 - if ping_once ${TEST_IPv4} && ping_once ${TEST_IPv6}; then 16 + if ping_once 4 ${TEST_IPv4} && ping_once 6 ${TEST_IPv6}; then 17 17 echo " OK" 18 18 return 19 19 fi