bpf, testing: Add various tail call test cases
authorDaniel Borkmann <daniel@iogearbox.net>
Fri, 22 Nov 2019 20:08:01 +0000 (21:08 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 25 Nov 2019 01:04:12 +0000 (17:04 -0800)
commit79d49ba048ecace59a9850e8a04b618d7848b8e7
tree690f7ab7802bc6fc215043adfe112fa867fb4e1f
parent428d5df1fa4f28daf622c48dd19da35585c9053c
bpf, testing: Add various tail call test cases

Add several BPF kselftest cases for tail calls which test the various
patch directions, and that multiple locations are patched in same and
different programs.

  # ./test_progs -n 45
   #45/1 tailcall_1:OK
   #45/2 tailcall_2:OK
   #45/3 tailcall_3:OK
   #45/4 tailcall_4:OK
   #45/5 tailcall_5:OK
   #45 tailcalls:OK
  Summary: 1/5 PASSED, 0 SKIPPED, 0 FAILED

I've also verified the JITed dump after each of the rewrite cases that
it matches expectations.

Also regular test_verifier suite passes fine which contains further tail
call tests:

  # ./test_verifier
  [...]
  Summary: 1563 PASSED, 0 SKIPPED, 0 FAILED

Checked under JIT, interpreter and JIT + hardening.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/3d6cbecbeb171117dccfe153306e479798fb608d.1574452833.git.daniel@iogearbox.net
tools/testing/selftests/bpf/prog_tests/tailcalls.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/tailcall1.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/tailcall2.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/tailcall3.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/tailcall4.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/tailcall5.c [new file with mode: 0644]