selftests/bpf: Test narrow loads with off > 0 in test_verifier
Test the following narrow loads in test_verifier for context __sk_buff: * off=1, size=1 - ok; * off=2, size=1 - ok; * off=3, size=1 - ok; * off=0, size=2 - ok; * off=1, size=2 - fail; * off=0, size=2 - ok; * off=3, size=2 - fail. Signed-off-by: Andrey Ignatov <rdna@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
Родитель
46f53a65d2
Коммит
6c2afb674d
|
@ -2026,29 +2026,27 @@ static struct bpf_test tests[] = {
|
|||
.result = ACCEPT,
|
||||
},
|
||||
{
|
||||
"check skb->hash byte load not permitted 1",
|
||||
"check skb->hash byte load permitted 1",
|
||||
.insns = {
|
||||
BPF_MOV64_IMM(BPF_REG_0, 0),
|
||||
BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, hash) + 1),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.errstr = "invalid bpf_context access",
|
||||
.result = REJECT,
|
||||
.result = ACCEPT,
|
||||
},
|
||||
{
|
||||
"check skb->hash byte load not permitted 2",
|
||||
"check skb->hash byte load permitted 2",
|
||||
.insns = {
|
||||
BPF_MOV64_IMM(BPF_REG_0, 0),
|
||||
BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, hash) + 2),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.errstr = "invalid bpf_context access",
|
||||
.result = REJECT,
|
||||
.result = ACCEPT,
|
||||
},
|
||||
{
|
||||
"check skb->hash byte load not permitted 3",
|
||||
"check skb->hash byte load permitted 3",
|
||||
.insns = {
|
||||
BPF_MOV64_IMM(BPF_REG_0, 0),
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
|
@ -2060,8 +2058,7 @@ static struct bpf_test tests[] = {
|
|||
#endif
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.errstr = "invalid bpf_context access",
|
||||
.result = REJECT,
|
||||
.result = ACCEPT,
|
||||
},
|
||||
{
|
||||
"check cb access: byte, wrong type",
|
||||
|
@ -2173,7 +2170,7 @@ static struct bpf_test tests[] = {
|
|||
.result = ACCEPT,
|
||||
},
|
||||
{
|
||||
"check skb->hash half load not permitted",
|
||||
"check skb->hash half load permitted 2",
|
||||
.insns = {
|
||||
BPF_MOV64_IMM(BPF_REG_0, 0),
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
|
@ -2182,6 +2179,37 @@ static struct bpf_test tests[] = {
|
|||
#else
|
||||
BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, hash)),
|
||||
#endif
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.result = ACCEPT,
|
||||
},
|
||||
{
|
||||
"check skb->hash half load not permitted, unaligned 1",
|
||||
.insns = {
|
||||
BPF_MOV64_IMM(BPF_REG_0, 0),
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, hash) + 1),
|
||||
#else
|
||||
BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, hash) + 3),
|
||||
#endif
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.errstr = "invalid bpf_context access",
|
||||
.result = REJECT,
|
||||
},
|
||||
{
|
||||
"check skb->hash half load not permitted, unaligned 3",
|
||||
.insns = {
|
||||
BPF_MOV64_IMM(BPF_REG_0, 0),
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, hash) + 3),
|
||||
#else
|
||||
BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
|
||||
offsetof(struct __sk_buff, hash) + 1),
|
||||
#endif
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
|
|
Загрузка…
Ссылка в новой задаче