]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commitee327711a173911e00552f8cc3c5248453db853a
tree690f7ab7802bc6fc215043adfe112fa867fb4e1f
parent65958e76e902028e05266e30563730834be1a21a
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]