1{
2	"jump test 1",
3	.insns = {
4	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_1, -8),
6	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
7	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 0),
8	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 1),
9	BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 1),
10	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2, 1),
11	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 2),
12	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 1),
13	BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 3),
14	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4, 1),
15	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 4),
16	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5, 1),
17	BPF_ST_MEM(BPF_DW, BPF_REG_2, -32, 5),
18	BPF_MOV64_IMM(BPF_REG_0, 0),
19	BPF_EXIT_INSN(),
20	},
21	.errstr_unpriv = "R1 pointer comparison",
22	.result_unpriv = REJECT,
23	.result = ACCEPT,
24},
25{
26	"jump test 2",
27	.insns = {
28	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
29	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 2),
30	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 0),
31	BPF_JMP_IMM(BPF_JA, 0, 0, 14),
32	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 2),
33	BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 0),
34	BPF_JMP_IMM(BPF_JA, 0, 0, 11),
35	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2, 2),
36	BPF_ST_MEM(BPF_DW, BPF_REG_2, -32, 0),
37	BPF_JMP_IMM(BPF_JA, 0, 0, 8),
38	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 2),
39	BPF_ST_MEM(BPF_DW, BPF_REG_2, -40, 0),
40	BPF_JMP_IMM(BPF_JA, 0, 0, 5),
41	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4, 2),
42	BPF_ST_MEM(BPF_DW, BPF_REG_2, -48, 0),
43	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
44	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5, 1),
45	BPF_ST_MEM(BPF_DW, BPF_REG_2, -56, 0),
46	BPF_MOV64_IMM(BPF_REG_0, 0),
47	BPF_EXIT_INSN(),
48	},
49	.errstr_unpriv = "R1 pointer comparison",
50	.result_unpriv = REJECT,
51	.result = ACCEPT,
52},
53{
54	"jump test 3",
55	.insns = {
56	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
57	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 3),
58	BPF_ST_MEM(BPF_DW, BPF_REG_2, -8, 0),
59	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
60	BPF_JMP_IMM(BPF_JA, 0, 0, 19),
61	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 3),
62	BPF_ST_MEM(BPF_DW, BPF_REG_2, -16, 0),
63	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -16),
64	BPF_JMP_IMM(BPF_JA, 0, 0, 15),
65	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 2, 3),
66	BPF_ST_MEM(BPF_DW, BPF_REG_2, -32, 0),
67	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -32),
68	BPF_JMP_IMM(BPF_JA, 0, 0, 11),
69	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 3, 3),
70	BPF_ST_MEM(BPF_DW, BPF_REG_2, -40, 0),
71	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -40),
72	BPF_JMP_IMM(BPF_JA, 0, 0, 7),
73	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 4, 3),
74	BPF_ST_MEM(BPF_DW, BPF_REG_2, -48, 0),
75	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -48),
76	BPF_JMP_IMM(BPF_JA, 0, 0, 3),
77	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 5, 0),
78	BPF_ST_MEM(BPF_DW, BPF_REG_2, -56, 0),
79	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -56),
80	BPF_LD_MAP_FD(BPF_REG_1, 0),
81	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_delete_elem),
82	BPF_EXIT_INSN(),
83	},
84	.fixup_map_hash_8b = { 24 },
85	.errstr_unpriv = "R1 pointer comparison",
86	.result_unpriv = REJECT,
87	.result = ACCEPT,
88	.retval = -ENOENT,
89},
90{
91	"jump test 4",
92	.insns = {
93	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
94	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
95	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
96	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
97	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
98	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
99	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
100	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
101	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
102	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
103	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
104	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
105	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
106	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
107	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
108	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
109	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
110	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
111	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
112	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
113	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
114	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
115	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
116	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
117	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
118	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
119	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
120	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
121	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
122	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
123	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
124	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
125	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 1),
126	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 2),
127	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 3),
128	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 4),
129	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
130	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
131	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
132	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, BPF_REG_10, 0),
133	BPF_MOV64_IMM(BPF_REG_0, 0),
134	BPF_EXIT_INSN(),
135	},
136	.errstr_unpriv = "R1 pointer comparison",
137	.result_unpriv = REJECT,
138	.result = ACCEPT,
139},
140{
141	"jump test 5",
142	.insns = {
143	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
144	BPF_MOV64_REG(BPF_REG_3, BPF_REG_2),
145	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
146	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
147	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
148	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
149	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
150	BPF_MOV64_IMM(BPF_REG_0, 0),
151	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
152	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
153	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
154	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
155	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
156	BPF_MOV64_IMM(BPF_REG_0, 0),
157	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
158	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
159	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
160	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
161	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
162	BPF_MOV64_IMM(BPF_REG_0, 0),
163	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
164	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
165	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
166	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
167	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
168	BPF_MOV64_IMM(BPF_REG_0, 0),
169	BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2),
170	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_3, -8),
171	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
172	BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_2, -8),
173	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
174	BPF_MOV64_IMM(BPF_REG_0, 0),
175	BPF_EXIT_INSN(),
176	},
177	.errstr_unpriv = "R1 pointer comparison",
178	.result_unpriv = REJECT,
179	.result = ACCEPT,
180},
181{
182	"jump test 6",
183	.insns = {
184	BPF_MOV64_IMM(BPF_REG_0, 1),
185	BPF_MOV64_IMM(BPF_REG_1, 2),
186	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
187	BPF_MOV64_IMM(BPF_REG_0, 2),
188	BPF_EXIT_INSN(),
189	BPF_JMP_REG(BPF_JNE, BPF_REG_0, BPF_REG_1, 16),
190	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
191	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
192	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
193	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
194	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
195	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
196	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
197	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
198	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
199	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
200	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
201	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
202	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
203	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
204	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
205	BPF_JMP_IMM(BPF_JA, 0, 0, 0),
206	BPF_JMP_IMM(BPF_JA, 0, 0, -20),
207	},
208	.result = ACCEPT,
209	.retval = 2,
210},
211{
212	"jump test 7",
213	.insns = {
214	BPF_MOV64_IMM(BPF_REG_0, 1),
215	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
216	BPF_MOV64_IMM(BPF_REG_0, 3),
217	BPF_EXIT_INSN(),
218	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 16),
219	BPF_MOV64_IMM(BPF_REG_0, 42),
220	BPF_MOV64_IMM(BPF_REG_0, 42),
221	BPF_MOV64_IMM(BPF_REG_0, 42),
222	BPF_MOV64_IMM(BPF_REG_0, 42),
223	BPF_MOV64_IMM(BPF_REG_0, 42),
224	BPF_MOV64_IMM(BPF_REG_0, 42),
225	BPF_MOV64_IMM(BPF_REG_0, 42),
226	BPF_MOV64_IMM(BPF_REG_0, 42),
227	BPF_MOV64_IMM(BPF_REG_0, 42),
228	BPF_MOV64_IMM(BPF_REG_0, 42),
229	BPF_MOV64_IMM(BPF_REG_0, 42),
230	BPF_MOV64_IMM(BPF_REG_0, 42),
231	BPF_MOV64_IMM(BPF_REG_0, 42),
232	BPF_MOV64_IMM(BPF_REG_0, 42),
233	BPF_MOV64_IMM(BPF_REG_0, 42),
234	BPF_MOV64_IMM(BPF_REG_0, 42),
235	BPF_JMP_IMM(BPF_JA, 0, 0, -20),
236	},
237	.result = ACCEPT,
238	.retval = 3,
239},
240{
241	"jump test 8",
242	.insns = {
243	BPF_MOV64_IMM(BPF_REG_0, 1),
244	BPF_MOV64_IMM(BPF_REG_1, 2),
245	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
246	BPF_MOV64_IMM(BPF_REG_0, 3),
247	BPF_EXIT_INSN(),
248	BPF_JMP_REG(BPF_JNE, BPF_REG_0, BPF_REG_1, 16),
249	BPF_MOV64_IMM(BPF_REG_0, 42),
250	BPF_MOV64_IMM(BPF_REG_0, 42),
251	BPF_MOV64_IMM(BPF_REG_0, 42),
252	BPF_MOV64_IMM(BPF_REG_0, 42),
253	BPF_MOV64_IMM(BPF_REG_0, 42),
254	BPF_MOV64_IMM(BPF_REG_0, 42),
255	BPF_MOV64_IMM(BPF_REG_0, 42),
256	BPF_MOV64_IMM(BPF_REG_0, 42),
257	BPF_MOV64_IMM(BPF_REG_0, 42),
258	BPF_MOV64_IMM(BPF_REG_0, 42),
259	BPF_MOV64_IMM(BPF_REG_0, 42),
260	BPF_MOV64_IMM(BPF_REG_0, 42),
261	BPF_MOV64_IMM(BPF_REG_0, 42),
262	BPF_MOV64_IMM(BPF_REG_0, 42),
263	BPF_MOV64_IMM(BPF_REG_0, 42),
264	BPF_MOV64_IMM(BPF_REG_0, 42),
265	BPF_JMP_IMM(BPF_JA, 0, 0, -20),
266	},
267	.result = ACCEPT,
268	.retval = 3,
269},
270{
271	"jump/call test 9",
272	.insns = {
273	BPF_MOV64_IMM(BPF_REG_0, 1),
274	BPF_JMP_IMM(BPF_JA, 0, 0, 2),
275	BPF_MOV64_IMM(BPF_REG_0, 3),
276	BPF_EXIT_INSN(),
277	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 16),
278	BPF_MOV64_IMM(BPF_REG_0, 42),
279	BPF_MOV64_IMM(BPF_REG_0, 42),
280	BPF_MOV64_IMM(BPF_REG_0, 42),
281	BPF_MOV64_IMM(BPF_REG_0, 42),
282	BPF_MOV64_IMM(BPF_REG_0, 42),
283	BPF_MOV64_IMM(BPF_REG_0, 42),
284	BPF_MOV64_IMM(BPF_REG_0, 42),
285	BPF_MOV64_IMM(BPF_REG_0, 42),
286	BPF_MOV64_IMM(BPF_REG_0, 42),
287	BPF_MOV64_IMM(BPF_REG_0, 42),
288	BPF_MOV64_IMM(BPF_REG_0, 42),
289	BPF_MOV64_IMM(BPF_REG_0, 42),
290	BPF_MOV64_IMM(BPF_REG_0, 42),
291	BPF_MOV64_IMM(BPF_REG_0, 42),
292	BPF_MOV64_IMM(BPF_REG_0, 42),
293	BPF_MOV64_IMM(BPF_REG_0, 42),
294	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -20),
295	BPF_EXIT_INSN(),
296	},
297	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
298	.result = REJECT,
299	.errstr = "jump out of range from insn 1 to 4",
300},
301{
302	"jump/call test 10",
303	.insns = {
304	BPF_MOV64_IMM(BPF_REG_0, 1),
305	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 2),
306	BPF_MOV64_IMM(BPF_REG_0, 3),
307	BPF_EXIT_INSN(),
308	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 16),
309	BPF_MOV64_IMM(BPF_REG_0, 42),
310	BPF_MOV64_IMM(BPF_REG_0, 42),
311	BPF_MOV64_IMM(BPF_REG_0, 42),
312	BPF_MOV64_IMM(BPF_REG_0, 42),
313	BPF_MOV64_IMM(BPF_REG_0, 42),
314	BPF_MOV64_IMM(BPF_REG_0, 42),
315	BPF_MOV64_IMM(BPF_REG_0, 42),
316	BPF_MOV64_IMM(BPF_REG_0, 42),
317	BPF_MOV64_IMM(BPF_REG_0, 42),
318	BPF_MOV64_IMM(BPF_REG_0, 42),
319	BPF_MOV64_IMM(BPF_REG_0, 42),
320	BPF_MOV64_IMM(BPF_REG_0, 42),
321	BPF_MOV64_IMM(BPF_REG_0, 42),
322	BPF_MOV64_IMM(BPF_REG_0, 42),
323	BPF_MOV64_IMM(BPF_REG_0, 42),
324	BPF_MOV64_IMM(BPF_REG_0, 42),
325	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -20),
326	BPF_EXIT_INSN(),
327	},
328	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
329	.result = REJECT,
330	.errstr = "last insn is not an exit or jmp",
331},
332{
333	"jump/call test 11",
334	.insns = {
335	BPF_MOV64_IMM(BPF_REG_0, 1),
336	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 4),
337	BPF_MOV64_IMM(BPF_REG_0, 3),
338	BPF_EXIT_INSN(),
339	BPF_MOV64_IMM(BPF_REG_0, 3),
340	BPF_EXIT_INSN(),
341	BPF_MOV64_IMM(BPF_REG_0, 1),
342	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 2, 26),
343	BPF_MOV64_IMM(BPF_REG_0, 42),
344	BPF_MOV64_IMM(BPF_REG_0, 42),
345	BPF_MOV64_IMM(BPF_REG_0, 42),
346	BPF_MOV64_IMM(BPF_REG_0, 42),
347	BPF_MOV64_IMM(BPF_REG_0, 42),
348	BPF_MOV64_IMM(BPF_REG_0, 42),
349	BPF_MOV64_IMM(BPF_REG_0, 42),
350	BPF_MOV64_IMM(BPF_REG_0, 42),
351	BPF_MOV64_IMM(BPF_REG_0, 42),
352	BPF_MOV64_IMM(BPF_REG_0, 42),
353	BPF_MOV64_IMM(BPF_REG_0, 42),
354	BPF_MOV64_IMM(BPF_REG_0, 42),
355	BPF_MOV64_IMM(BPF_REG_0, 42),
356	BPF_MOV64_IMM(BPF_REG_0, 42),
357	BPF_MOV64_IMM(BPF_REG_0, 42),
358	BPF_MOV64_IMM(BPF_REG_0, 42),
359	BPF_MOV64_IMM(BPF_REG_0, 42),
360	BPF_MOV64_IMM(BPF_REG_0, 42),
361	BPF_MOV64_IMM(BPF_REG_0, 42),
362	BPF_MOV64_IMM(BPF_REG_0, 42),
363	BPF_MOV64_IMM(BPF_REG_0, 42),
364	BPF_MOV64_IMM(BPF_REG_0, 42),
365	BPF_MOV64_IMM(BPF_REG_0, 42),
366	BPF_MOV64_IMM(BPF_REG_0, 42),
367	BPF_MOV64_IMM(BPF_REG_0, 42),
368	BPF_MOV64_IMM(BPF_REG_0, 42),
369	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -31),
370	BPF_EXIT_INSN(),
371	},
372	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
373	.result = ACCEPT,
374	.retval = 3,
375},
376{
377	"jump & dead code elimination",
378	.insns = {
379	BPF_MOV64_IMM(BPF_REG_0, 1),
380	BPF_MOV64_IMM(BPF_REG_3, 0),
381	BPF_ALU64_IMM(BPF_NEG, BPF_REG_3, 0),
382	BPF_ALU64_IMM(BPF_NEG, BPF_REG_3, 0),
383	BPF_ALU64_IMM(BPF_OR, BPF_REG_3, 32767),
384	BPF_JMP_IMM(BPF_JSGE, BPF_REG_3, 0, 1),
385	BPF_EXIT_INSN(),
386	BPF_JMP_IMM(BPF_JSLE, BPF_REG_3, 0x8000, 1),
387	BPF_EXIT_INSN(),
388	BPF_ALU64_IMM(BPF_ADD, BPF_REG_3, -32767),
389	BPF_MOV64_IMM(BPF_REG_0, 2),
390	BPF_JMP_IMM(BPF_JLE, BPF_REG_3, 0, 1),
391	BPF_MOV64_REG(BPF_REG_0, BPF_REG_4),
392	BPF_EXIT_INSN(),
393	},
394	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
395	.result = ACCEPT,
396	.retval = 2,
397},
398