mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 17:11:33 +00:00
tools/bpf: Add verifier tests for 32bit pointer/scalar arithmetic
Added two test_verifier subtests for 32bit pointer/scalar arithmetic with BPF_SUB operator. They are passing verifier now. Signed-off-by: Yonghong Song <yhs@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20200618234632.3321367-1-yhs@fb.com
This commit is contained in:
parent
6c6935419e
commit
d56b74b9e1
@ -836,3 +836,41 @@
|
||||
.errstr = "R0 invalid mem access 'inv'",
|
||||
.errstr_unpriv = "R0 pointer -= pointer prohibited",
|
||||
},
|
||||
{
|
||||
"32bit pkt_ptr -= scalar",
|
||||
.insns = {
|
||||
BPF_LDX_MEM(BPF_W, BPF_REG_8, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, data_end)),
|
||||
BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, data)),
|
||||
BPF_MOV64_REG(BPF_REG_6, BPF_REG_7),
|
||||
BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, 40),
|
||||
BPF_JMP_REG(BPF_JGT, BPF_REG_6, BPF_REG_8, 2),
|
||||
BPF_ALU32_REG(BPF_MOV, BPF_REG_4, BPF_REG_7),
|
||||
BPF_ALU32_REG(BPF_SUB, BPF_REG_6, BPF_REG_4),
|
||||
BPF_MOV64_IMM(BPF_REG_0, 0),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.prog_type = BPF_PROG_TYPE_SCHED_CLS,
|
||||
.result = ACCEPT,
|
||||
.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
|
||||
},
|
||||
{
|
||||
"32bit scalar -= pkt_ptr",
|
||||
.insns = {
|
||||
BPF_LDX_MEM(BPF_W, BPF_REG_8, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, data_end)),
|
||||
BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, data)),
|
||||
BPF_MOV64_REG(BPF_REG_6, BPF_REG_7),
|
||||
BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, 40),
|
||||
BPF_JMP_REG(BPF_JGT, BPF_REG_6, BPF_REG_8, 2),
|
||||
BPF_ALU32_REG(BPF_MOV, BPF_REG_4, BPF_REG_6),
|
||||
BPF_ALU32_REG(BPF_SUB, BPF_REG_4, BPF_REG_7),
|
||||
BPF_MOV64_IMM(BPF_REG_0, 0),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.prog_type = BPF_PROG_TYPE_SCHED_CLS,
|
||||
.result = ACCEPT,
|
||||
.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user