selftests/bpf: Add asm tests for pkt vs pkt_end comparison.
Add few assembly tests for packet comparison. Signed-off-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Tested-by: Jiri Olsa <jolsa@redhat.com> Acked-by: John Fastabend <john.fastabend@gmail.com> Link: https://lore.kernel.org/bpf/20201111031213.25109-4-alexei.starovoitov@gmail.com
This commit is contained in:
parent
9cc873e858
commit
cb62d34019
|
@ -1089,3 +1089,45 @@
|
||||||
.errstr_unpriv = "R1 leaks addr",
|
.errstr_unpriv = "R1 leaks addr",
|
||||||
.result = REJECT,
|
.result = REJECT,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pkt > pkt_end taken check",
|
||||||
|
.insns = {
|
||||||
|
BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1, // 0. r2 = *(u32 *)(r1 + data_end)
|
||||||
|
offsetof(struct __sk_buff, data_end)),
|
||||||
|
BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1, // 1. r4 = *(u32 *)(r1 + data)
|
||||||
|
offsetof(struct __sk_buff, data)),
|
||||||
|
BPF_MOV64_REG(BPF_REG_3, BPF_REG_4), // 2. r3 = r4
|
||||||
|
BPF_ALU64_IMM(BPF_ADD, BPF_REG_3, 42), // 3. r3 += 42
|
||||||
|
BPF_MOV64_IMM(BPF_REG_1, 0), // 4. r1 = 0
|
||||||
|
BPF_JMP_REG(BPF_JGT, BPF_REG_3, BPF_REG_2, 2), // 5. if r3 > r2 goto 8
|
||||||
|
BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 14), // 6. r4 += 14
|
||||||
|
BPF_MOV64_REG(BPF_REG_1, BPF_REG_4), // 7. r1 = r4
|
||||||
|
BPF_JMP_REG(BPF_JGT, BPF_REG_3, BPF_REG_2, 1), // 8. if r3 > r2 goto 10
|
||||||
|
BPF_LDX_MEM(BPF_H, BPF_REG_2, BPF_REG_1, 9), // 9. r2 = *(u8 *)(r1 + 9)
|
||||||
|
BPF_MOV64_IMM(BPF_REG_0, 0), // 10. r0 = 0
|
||||||
|
BPF_EXIT_INSN(), // 11. exit
|
||||||
|
},
|
||||||
|
.result = ACCEPT,
|
||||||
|
.prog_type = BPF_PROG_TYPE_SK_SKB,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pkt_end < pkt taken check",
|
||||||
|
.insns = {
|
||||||
|
BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1, // 0. r2 = *(u32 *)(r1 + data_end)
|
||||||
|
offsetof(struct __sk_buff, data_end)),
|
||||||
|
BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1, // 1. r4 = *(u32 *)(r1 + data)
|
||||||
|
offsetof(struct __sk_buff, data)),
|
||||||
|
BPF_MOV64_REG(BPF_REG_3, BPF_REG_4), // 2. r3 = r4
|
||||||
|
BPF_ALU64_IMM(BPF_ADD, BPF_REG_3, 42), // 3. r3 += 42
|
||||||
|
BPF_MOV64_IMM(BPF_REG_1, 0), // 4. r1 = 0
|
||||||
|
BPF_JMP_REG(BPF_JGT, BPF_REG_3, BPF_REG_2, 2), // 5. if r3 > r2 goto 8
|
||||||
|
BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 14), // 6. r4 += 14
|
||||||
|
BPF_MOV64_REG(BPF_REG_1, BPF_REG_4), // 7. r1 = r4
|
||||||
|
BPF_JMP_REG(BPF_JLT, BPF_REG_2, BPF_REG_3, 1), // 8. if r2 < r3 goto 10
|
||||||
|
BPF_LDX_MEM(BPF_H, BPF_REG_2, BPF_REG_1, 9), // 9. r2 = *(u8 *)(r1 + 9)
|
||||||
|
BPF_MOV64_IMM(BPF_REG_0, 0), // 10. r0 = 0
|
||||||
|
BPF_EXIT_INSN(), // 11. exit
|
||||||
|
},
|
||||||
|
.result = ACCEPT,
|
||||||
|
.prog_type = BPF_PROG_TYPE_SK_SKB,
|
||||||
|
},
|
||||||
|
|
Loading…
Reference in New Issue