diff options
Diffstat (limited to 'lib/test_bpf.c')
-rw-r--r-- | lib/test_bpf.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/test_bpf.c b/lib/test_bpf.c index 889bc31785be..be88cbaadde3 100644 --- a/lib/test_bpf.c +++ b/lib/test_bpf.c | |||
@@ -4504,6 +4504,44 @@ static struct bpf_test tests[] = { | |||
4504 | { }, | 4504 | { }, |
4505 | { { 0, 1 } }, | 4505 | { { 0, 1 } }, |
4506 | }, | 4506 | }, |
4507 | { | ||
4508 | "JMP_JSGE_K: Signed jump: value walk 1", | ||
4509 | .u.insns_int = { | ||
4510 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
4511 | BPF_LD_IMM64(R1, -3), | ||
4512 | BPF_JMP_IMM(BPF_JSGE, R1, 0, 6), | ||
4513 | BPF_ALU64_IMM(BPF_ADD, R1, 1), | ||
4514 | BPF_JMP_IMM(BPF_JSGE, R1, 0, 4), | ||
4515 | BPF_ALU64_IMM(BPF_ADD, R1, 1), | ||
4516 | BPF_JMP_IMM(BPF_JSGE, R1, 0, 2), | ||
4517 | BPF_ALU64_IMM(BPF_ADD, R1, 1), | ||
4518 | BPF_JMP_IMM(BPF_JSGE, R1, 0, 1), | ||
4519 | BPF_EXIT_INSN(), /* bad exit */ | ||
4520 | BPF_ALU32_IMM(BPF_MOV, R0, 1), /* good exit */ | ||
4521 | BPF_EXIT_INSN(), | ||
4522 | }, | ||
4523 | INTERNAL, | ||
4524 | { }, | ||
4525 | { { 0, 1 } }, | ||
4526 | }, | ||
4527 | { | ||
4528 | "JMP_JSGE_K: Signed jump: value walk 2", | ||
4529 | .u.insns_int = { | ||
4530 | BPF_ALU32_IMM(BPF_MOV, R0, 0), | ||
4531 | BPF_LD_IMM64(R1, -3), | ||
4532 | BPF_JMP_IMM(BPF_JSGE, R1, 0, 4), | ||
4533 | BPF_ALU64_IMM(BPF_ADD, R1, 2), | ||
4534 | BPF_JMP_IMM(BPF_JSGE, R1, 0, 2), | ||
4535 | BPF_ALU64_IMM(BPF_ADD, R1, 2), | ||
4536 | BPF_JMP_IMM(BPF_JSGE, R1, 0, 1), | ||
4537 | BPF_EXIT_INSN(), /* bad exit */ | ||
4538 | BPF_ALU32_IMM(BPF_MOV, R0, 1), /* good exit */ | ||
4539 | BPF_EXIT_INSN(), | ||
4540 | }, | ||
4541 | INTERNAL, | ||
4542 | { }, | ||
4543 | { { 0, 1 } }, | ||
4544 | }, | ||
4507 | /* BPF_JMP | BPF_JGT | BPF_K */ | 4545 | /* BPF_JMP | BPF_JGT | BPF_K */ |
4508 | { | 4546 | { |
4509 | "JMP_JGT_K: if (3 > 2) return 1", | 4547 | "JMP_JGT_K: if (3 > 2) return 1", |