WIP FPC-III support
[linux/fpc-iii.git] / tools / testing / selftests / bpf / verifier / const_or.c
blob6c214c58e8d4a5ecfac4f99b76a9c38adba07fcf
2 "constant register |= constant should keep constant type",
3 .insns = {
4 BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
5 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -48),
6 BPF_MOV64_IMM(BPF_REG_2, 34),
7 BPF_ALU64_IMM(BPF_OR, BPF_REG_2, 13),
8 BPF_MOV64_IMM(BPF_REG_3, 0),
9 BPF_EMIT_CALL(BPF_FUNC_probe_read_kernel),
10 BPF_EXIT_INSN(),
12 .result = ACCEPT,
13 .prog_type = BPF_PROG_TYPE_TRACEPOINT,
16 "constant register |= constant should not bypass stack boundary checks",
17 .insns = {
18 BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
19 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -48),
20 BPF_MOV64_IMM(BPF_REG_2, 34),
21 BPF_ALU64_IMM(BPF_OR, BPF_REG_2, 24),
22 BPF_MOV64_IMM(BPF_REG_3, 0),
23 BPF_EMIT_CALL(BPF_FUNC_probe_read_kernel),
24 BPF_EXIT_INSN(),
26 .errstr = "invalid stack type R1 off=-48 access_size=58",
27 .result = REJECT,
28 .prog_type = BPF_PROG_TYPE_TRACEPOINT,
31 "constant register |= constant register should keep constant type",
32 .insns = {
33 BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
34 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -48),
35 BPF_MOV64_IMM(BPF_REG_2, 34),
36 BPF_MOV64_IMM(BPF_REG_4, 13),
37 BPF_ALU64_REG(BPF_OR, BPF_REG_2, BPF_REG_4),
38 BPF_MOV64_IMM(BPF_REG_3, 0),
39 BPF_EMIT_CALL(BPF_FUNC_probe_read_kernel),
40 BPF_EXIT_INSN(),
42 .result = ACCEPT,
43 .prog_type = BPF_PROG_TYPE_TRACEPOINT,
46 "constant register |= constant register should not bypass stack boundary checks",
47 .insns = {
48 BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
49 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -48),
50 BPF_MOV64_IMM(BPF_REG_2, 34),
51 BPF_MOV64_IMM(BPF_REG_4, 24),
52 BPF_ALU64_REG(BPF_OR, BPF_REG_2, BPF_REG_4),
53 BPF_MOV64_IMM(BPF_REG_3, 0),
54 BPF_EMIT_CALL(BPF_FUNC_probe_read_kernel),
55 BPF_EXIT_INSN(),
57 .errstr = "invalid stack type R1 off=-48 access_size=58",
58 .result = REJECT,
59 .prog_type = BPF_PROG_TYPE_TRACEPOINT,