Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1{
2 "dead code: start",
3 .insns = {
4 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
5 /* unpriv: nospec (inserted to prevent "R9 !read_ok") */
6 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
7 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
8 BPF_MOV64_IMM(BPF_REG_0, 7),
9 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, -4),
10 BPF_EXIT_INSN(),
11 },
12 .result = ACCEPT,
13 .retval = 7,
14},
15{
16 "dead code: mid 1",
17 .insns = {
18 BPF_MOV64_IMM(BPF_REG_0, 7),
19 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1),
20 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 0),
21 BPF_EXIT_INSN(),
22 },
23 .result = ACCEPT,
24 .retval = 7,
25},
26{
27 "dead code: mid 2",
28 .insns = {
29 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
30 BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 4),
31 BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 1),
32 BPF_JMP_IMM(BPF_JA, 0, 0, 2),
33 BPF_MOV64_IMM(BPF_REG_0, 7),
34 BPF_EXIT_INSN(),
35 BPF_MOV64_IMM(BPF_REG_0, 1),
36 BPF_EXIT_INSN(),
37 },
38 .result = ACCEPT,
39 .retval = 1,
40},
41{
42 "dead code: end 1",
43 .insns = {
44 BPF_MOV64_IMM(BPF_REG_0, 7),
45 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),
46 BPF_EXIT_INSN(),
47 BPF_EXIT_INSN(),
48 },
49 .result = ACCEPT,
50 .retval = 7,
51},
52{
53 "dead code: end 2",
54 .insns = {
55 BPF_MOV64_IMM(BPF_REG_0, 7),
56 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),
57 BPF_EXIT_INSN(),
58 BPF_MOV64_IMM(BPF_REG_0, 12),
59 BPF_EXIT_INSN(),
60 },
61 .result = ACCEPT,
62 .retval = 7,
63},
64{
65 "dead code: end 3",
66 .insns = {
67 BPF_MOV64_IMM(BPF_REG_0, 7),
68 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),
69 BPF_EXIT_INSN(),
70 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),
71 BPF_JMP_IMM(BPF_JA, 0, 0, 1),
72 BPF_MOV64_IMM(BPF_REG_0, 12),
73 BPF_JMP_IMM(BPF_JA, 0, 0, -5),
74 },
75 .result = ACCEPT,
76 .retval = 7,
77},
78{
79 "dead code: tail of main + func",
80 .insns = {
81 BPF_MOV64_IMM(BPF_REG_0, 7),
82 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),
83 BPF_EXIT_INSN(),
84 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
85 BPF_EXIT_INSN(),
86 BPF_MOV64_IMM(BPF_REG_0, 12),
87 BPF_EXIT_INSN(),
88 },
89 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
90 .result_unpriv = REJECT,
91 .result = ACCEPT,
92 .retval = 7,
93},
94{
95 "dead code: tail of main + two functions",
96 .insns = {
97 BPF_MOV64_IMM(BPF_REG_0, 7),
98 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),
99 BPF_EXIT_INSN(),
100 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
101 BPF_EXIT_INSN(),
102 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
103 BPF_EXIT_INSN(),
104 BPF_MOV64_IMM(BPF_REG_0, 12),
105 BPF_EXIT_INSN(),
106 },
107 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
108 .result_unpriv = REJECT,
109 .result = ACCEPT,
110 .retval = 7,
111},
112{
113 "dead code: function in the middle and mid of another func",
114 .insns = {
115 BPF_MOV64_IMM(BPF_REG_1, 7),
116 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 3),
117 BPF_EXIT_INSN(),
118 BPF_MOV64_IMM(BPF_REG_0, 12),
119 BPF_EXIT_INSN(),
120 BPF_MOV64_IMM(BPF_REG_0, 7),
121 BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 7, 1),
122 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -5),
123 BPF_EXIT_INSN(),
124 },
125 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
126 .result_unpriv = REJECT,
127 .result = ACCEPT,
128 .retval = 7,
129},
130{
131 "dead code: middle of main before call",
132 .insns = {
133 BPF_MOV64_IMM(BPF_REG_1, 2),
134 BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 2, 1),
135 BPF_MOV64_IMM(BPF_REG_1, 5),
136 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
137 BPF_EXIT_INSN(),
138 BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),
139 BPF_EXIT_INSN(),
140 },
141 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
142 .result_unpriv = REJECT,
143 .result = ACCEPT,
144 .retval = 2,
145},
146{
147 "dead code: start of a function",
148 .insns = {
149 BPF_MOV64_IMM(BPF_REG_1, 2),
150 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
151 BPF_EXIT_INSN(),
152 BPF_JMP_IMM(BPF_JA, 0, 0, 0),
153 BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),
154 BPF_EXIT_INSN(),
155 },
156 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
157 .result_unpriv = REJECT,
158 .result = ACCEPT,
159 .retval = 2,
160},
161{
162 "dead code: zero extension",
163 .insns = {
164 BPF_MOV64_IMM(BPF_REG_0, 0),
165 BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_0, -4),
166 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1),
167 BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_10, -4),
168 BPF_EXIT_INSN(),
169 },
170 .result = ACCEPT,
171 .retval = 0,
172},