diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/testing/selftests/bpf/test_verifier.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c index c0f16e93f9bd..c73592fa3d41 100644 --- a/tools/testing/selftests/bpf/test_verifier.c +++ b/tools/testing/selftests/bpf/test_verifier.c | |||
@@ -2587,6 +2587,32 @@ static struct bpf_test tests[] = { | |||
2587 | .result = ACCEPT, | 2587 | .result = ACCEPT, |
2588 | }, | 2588 | }, |
2589 | { | 2589 | { |
2590 | "runtime/jit: pass negative index to tail_call", | ||
2591 | .insns = { | ||
2592 | BPF_MOV64_IMM(BPF_REG_3, -1), | ||
2593 | BPF_LD_MAP_FD(BPF_REG_2, 0), | ||
2594 | BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, | ||
2595 | BPF_FUNC_tail_call), | ||
2596 | BPF_MOV64_IMM(BPF_REG_0, 0), | ||
2597 | BPF_EXIT_INSN(), | ||
2598 | }, | ||
2599 | .fixup_prog = { 1 }, | ||
2600 | .result = ACCEPT, | ||
2601 | }, | ||
2602 | { | ||
2603 | "runtime/jit: pass > 32bit index to tail_call", | ||
2604 | .insns = { | ||
2605 | BPF_LD_IMM64(BPF_REG_3, 0x100000000ULL), | ||
2606 | BPF_LD_MAP_FD(BPF_REG_2, 0), | ||
2607 | BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, | ||
2608 | BPF_FUNC_tail_call), | ||
2609 | BPF_MOV64_IMM(BPF_REG_0, 0), | ||
2610 | BPF_EXIT_INSN(), | ||
2611 | }, | ||
2612 | .fixup_prog = { 2 }, | ||
2613 | .result = ACCEPT, | ||
2614 | }, | ||
2615 | { | ||
2590 | "stack pointer arithmetic", | 2616 | "stack pointer arithmetic", |
2591 | .insns = { | 2617 | .insns = { |
2592 | BPF_MOV64_IMM(BPF_REG_1, 4), | 2618 | BPF_MOV64_IMM(BPF_REG_1, 4), |