forked from Minki/linux
net: filter: test fill/spill of all M[] regs
This test for classic BPF probes stores and load combination via X on all 16 registers of the scratch memory store. It initially loads integer 100 and passes this value around to each register while incrementing it every time, thus we expect to have 116 as a result. Might be useful for JIT testing. Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Acked-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c4438f03ca
commit
108cc22a93
@ -1485,6 +1485,96 @@ static struct bpf_test tests[] = {
|
||||
{ },
|
||||
{ },
|
||||
},
|
||||
{ /* Mainly checking JIT here. */
|
||||
"M[]: STX + LDX",
|
||||
.u.insns = {
|
||||
BPF_STMT(BPF_LDX | BPF_IMM, 100),
|
||||
BPF_STMT(BPF_STX, 0),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 0),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 1),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 2),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 2),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 3),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 3),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 4),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 4),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 5),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 5),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 6),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 6),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 7),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 7),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 8),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 8),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 9),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 9),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 10),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 10),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 11),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 11),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 12),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 12),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 13),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 13),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 14),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 14),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_STX, 15),
|
||||
BPF_STMT(BPF_LDX | BPF_MEM, 15),
|
||||
BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
||||
BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
||||
BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
||||
BPF_STMT(BPF_RET | BPF_A, 0),
|
||||
},
|
||||
CLASSIC | FLAG_NO_DATA,
|
||||
{ },
|
||||
{ { 0, 116 } },
|
||||
},
|
||||
};
|
||||
|
||||
static struct net_device dev;
|
||||
|
Loading…
Reference in New Issue
Block a user