Linux Audio

Check our new training course

Loading...
v6.13.7
  1// SPDX-License-Identifier: GPL-2.0
  2/* Converted from tools/testing/selftests/bpf/verifier/masking.c */
  3
  4#include <linux/bpf.h>
  5#include <bpf/bpf_helpers.h>
  6#include "bpf_misc.h"
  7
  8SEC("socket")
  9__description("masking, test out of bounds 1")
 10__success __success_unpriv __retval(0)
 11__naked void test_out_of_bounds_1(void)
 12{
 13	asm volatile ("					\
 14	w1 = 5;						\
 15	w2 = %[__imm_0];				\
 16	r2 -= r1;					\
 17	r2 |= r1;					\
 18	r2 = -r2;					\
 19	r2 s>>= 63;					\
 20	r1 &= r2;					\
 21	r0 = r1;					\
 22	exit;						\
 23"	:
 24	: __imm_const(__imm_0, 5 - 1)
 25	: __clobber_all);
 26}
 27
 28SEC("socket")
 29__description("masking, test out of bounds 2")
 30__success __success_unpriv __retval(0)
 31__naked void test_out_of_bounds_2(void)
 32{
 33	asm volatile ("					\
 34	w1 = 1;						\
 35	w2 = %[__imm_0];				\
 36	r2 -= r1;					\
 37	r2 |= r1;					\
 38	r2 = -r2;					\
 39	r2 s>>= 63;					\
 40	r1 &= r2;					\
 41	r0 = r1;					\
 42	exit;						\
 43"	:
 44	: __imm_const(__imm_0, 1 - 1)
 45	: __clobber_all);
 46}
 47
 48SEC("socket")
 49__description("masking, test out of bounds 3")
 50__success __success_unpriv __retval(0)
 51__naked void test_out_of_bounds_3(void)
 52{
 53	asm volatile ("					\
 54	w1 = 0xffffffff;				\
 55	w2 = %[__imm_0];				\
 56	r2 -= r1;					\
 57	r2 |= r1;					\
 58	r2 = -r2;					\
 59	r2 s>>= 63;					\
 60	r1 &= r2;					\
 61	r0 = r1;					\
 62	exit;						\
 63"	:
 64	: __imm_const(__imm_0, 0xffffffff - 1)
 65	: __clobber_all);
 66}
 67
 68SEC("socket")
 69__description("masking, test out of bounds 4")
 70__success __success_unpriv __retval(0)
 71__naked void test_out_of_bounds_4(void)
 72{
 73	asm volatile ("					\
 74	w1 = 0xffffffff;				\
 75	w2 = %[__imm_0];				\
 76	r2 -= r1;					\
 77	r2 |= r1;					\
 78	r2 = -r2;					\
 79	r2 s>>= 63;					\
 80	r1 &= r2;					\
 81	r0 = r1;					\
 82	exit;						\
 83"	:
 84	: __imm_const(__imm_0, 1 - 1)
 85	: __clobber_all);
 86}
 87
 88SEC("socket")
 89__description("masking, test out of bounds 5")
 90__success __success_unpriv __retval(0)
 91__naked void test_out_of_bounds_5(void)
 92{
 93	asm volatile ("					\
 94	w1 = -1;					\
 95	w2 = %[__imm_0];				\
 96	r2 -= r1;					\
 97	r2 |= r1;					\
 98	r2 = -r2;					\
 99	r2 s>>= 63;					\
100	r1 &= r2;					\
101	r0 = r1;					\
102	exit;						\
103"	:
104	: __imm_const(__imm_0, 1 - 1)
105	: __clobber_all);
106}
107
108SEC("socket")
109__description("masking, test out of bounds 6")
110__success __success_unpriv __retval(0)
111__naked void test_out_of_bounds_6(void)
112{
113	asm volatile ("					\
114	w1 = -1;					\
115	w2 = %[__imm_0];				\
116	r2 -= r1;					\
117	r2 |= r1;					\
118	r2 = -r2;					\
119	r2 s>>= 63;					\
120	r1 &= r2;					\
121	r0 = r1;					\
122	exit;						\
123"	:
124	: __imm_const(__imm_0, 0xffffffff - 1)
125	: __clobber_all);
126}
127
128SEC("socket")
129__description("masking, test out of bounds 7")
130__success __success_unpriv __retval(0)
131__naked void test_out_of_bounds_7(void)
132{
133	asm volatile ("					\
134	r1 = 5;						\
135	w2 = %[__imm_0];				\
136	r2 -= r1;					\
137	r2 |= r1;					\
138	r2 = -r2;					\
139	r2 s>>= 63;					\
140	r1 &= r2;					\
141	r0 = r1;					\
142	exit;						\
143"	:
144	: __imm_const(__imm_0, 5 - 1)
145	: __clobber_all);
146}
147
148SEC("socket")
149__description("masking, test out of bounds 8")
150__success __success_unpriv __retval(0)
151__naked void test_out_of_bounds_8(void)
152{
153	asm volatile ("					\
154	r1 = 1;						\
155	w2 = %[__imm_0];				\
156	r2 -= r1;					\
157	r2 |= r1;					\
158	r2 = -r2;					\
159	r2 s>>= 63;					\
160	r1 &= r2;					\
161	r0 = r1;					\
162	exit;						\
163"	:
164	: __imm_const(__imm_0, 1 - 1)
165	: __clobber_all);
166}
167
168SEC("socket")
169__description("masking, test out of bounds 9")
170__success __success_unpriv __retval(0)
171__naked void test_out_of_bounds_9(void)
172{
173	asm volatile ("					\
174	r1 = 0xffffffff;				\
175	w2 = %[__imm_0];				\
176	r2 -= r1;					\
177	r2 |= r1;					\
178	r2 = -r2;					\
179	r2 s>>= 63;					\
180	r1 &= r2;					\
181	r0 = r1;					\
182	exit;						\
183"	:
184	: __imm_const(__imm_0, 0xffffffff - 1)
185	: __clobber_all);
186}
187
188SEC("socket")
189__description("masking, test out of bounds 10")
190__success __success_unpriv __retval(0)
191__naked void test_out_of_bounds_10(void)
192{
193	asm volatile ("					\
194	r1 = 0xffffffff;				\
195	w2 = %[__imm_0];				\
196	r2 -= r1;					\
197	r2 |= r1;					\
198	r2 = -r2;					\
199	r2 s>>= 63;					\
200	r1 &= r2;					\
201	r0 = r1;					\
202	exit;						\
203"	:
204	: __imm_const(__imm_0, 1 - 1)
205	: __clobber_all);
206}
207
208SEC("socket")
209__description("masking, test out of bounds 11")
210__success __success_unpriv __retval(0)
211__naked void test_out_of_bounds_11(void)
212{
213	asm volatile ("					\
214	r1 = -1;					\
215	w2 = %[__imm_0];				\
216	r2 -= r1;					\
217	r2 |= r1;					\
218	r2 = -r2;					\
219	r2 s>>= 63;					\
220	r1 &= r2;					\
221	r0 = r1;					\
222	exit;						\
223"	:
224	: __imm_const(__imm_0, 1 - 1)
225	: __clobber_all);
226}
227
228SEC("socket")
229__description("masking, test out of bounds 12")
230__success __success_unpriv __retval(0)
231__naked void test_out_of_bounds_12(void)
232{
233	asm volatile ("					\
234	r1 = -1;					\
235	w2 = %[__imm_0];				\
236	r2 -= r1;					\
237	r2 |= r1;					\
238	r2 = -r2;					\
239	r2 s>>= 63;					\
240	r1 &= r2;					\
241	r0 = r1;					\
242	exit;						\
243"	:
244	: __imm_const(__imm_0, 0xffffffff - 1)
245	: __clobber_all);
246}
247
248SEC("socket")
249__description("masking, test in bounds 1")
250__success __success_unpriv __retval(4)
251__naked void masking_test_in_bounds_1(void)
252{
253	asm volatile ("					\
254	w1 = 4;						\
255	w2 = %[__imm_0];				\
256	r2 -= r1;					\
257	r2 |= r1;					\
258	r2 = -r2;					\
259	r2 s>>= 63;					\
260	r1 &= r2;					\
261	r0 = r1;					\
262	exit;						\
263"	:
264	: __imm_const(__imm_0, 5 - 1)
265	: __clobber_all);
266}
267
268SEC("socket")
269__description("masking, test in bounds 2")
270__success __success_unpriv __retval(0)
271__naked void masking_test_in_bounds_2(void)
272{
273	asm volatile ("					\
274	w1 = 0;						\
275	w2 = %[__imm_0];				\
276	r2 -= r1;					\
277	r2 |= r1;					\
278	r2 = -r2;					\
279	r2 s>>= 63;					\
280	r1 &= r2;					\
281	r0 = r1;					\
282	exit;						\
283"	:
284	: __imm_const(__imm_0, 0xffffffff - 1)
285	: __clobber_all);
286}
287
288SEC("socket")
289__description("masking, test in bounds 3")
290__success __success_unpriv __retval(0xfffffffe)
291__naked void masking_test_in_bounds_3(void)
292{
293	asm volatile ("					\
294	w1 = 0xfffffffe;				\
295	w2 = %[__imm_0];				\
296	r2 -= r1;					\
297	r2 |= r1;					\
298	r2 = -r2;					\
299	r2 s>>= 63;					\
300	r1 &= r2;					\
301	r0 = r1;					\
302	exit;						\
303"	:
304	: __imm_const(__imm_0, 0xffffffff - 1)
305	: __clobber_all);
306}
307
308SEC("socket")
309__description("masking, test in bounds 4")
310__success __success_unpriv __retval(0xabcde)
311__naked void masking_test_in_bounds_4(void)
312{
313	asm volatile ("					\
314	w1 = 0xabcde;					\
315	w2 = %[__imm_0];				\
316	r2 -= r1;					\
317	r2 |= r1;					\
318	r2 = -r2;					\
319	r2 s>>= 63;					\
320	r1 &= r2;					\
321	r0 = r1;					\
322	exit;						\
323"	:
324	: __imm_const(__imm_0, 0xabcdef - 1)
325	: __clobber_all);
326}
327
328SEC("socket")
329__description("masking, test in bounds 5")
330__success __success_unpriv __retval(0)
331__naked void masking_test_in_bounds_5(void)
332{
333	asm volatile ("					\
334	w1 = 0;						\
335	w2 = %[__imm_0];				\
336	r2 -= r1;					\
337	r2 |= r1;					\
338	r2 = -r2;					\
339	r2 s>>= 63;					\
340	r1 &= r2;					\
341	r0 = r1;					\
342	exit;						\
343"	:
344	: __imm_const(__imm_0, 1 - 1)
345	: __clobber_all);
346}
347
348SEC("socket")
349__description("masking, test in bounds 6")
350__success __success_unpriv __retval(46)
351__naked void masking_test_in_bounds_6(void)
352{
353	asm volatile ("					\
354	w1 = 46;					\
355	w2 = %[__imm_0];				\
356	r2 -= r1;					\
357	r2 |= r1;					\
358	r2 = -r2;					\
359	r2 s>>= 63;					\
360	r1 &= r2;					\
361	r0 = r1;					\
362	exit;						\
363"	:
364	: __imm_const(__imm_0, 47 - 1)
365	: __clobber_all);
366}
367
368SEC("socket")
369__description("masking, test in bounds 7")
370__success __success_unpriv __retval(46)
371__naked void masking_test_in_bounds_7(void)
372{
373	asm volatile ("					\
374	r3 = -46;					\
375	r3 *= -1;					\
376	w2 = %[__imm_0];				\
377	r2 -= r3;					\
378	r2 |= r3;					\
379	r2 = -r2;					\
380	r2 s>>= 63;					\
381	r3 &= r2;					\
382	r0 = r3;					\
383	exit;						\
384"	:
385	: __imm_const(__imm_0, 47 - 1)
386	: __clobber_all);
387}
388
389SEC("socket")
390__description("masking, test in bounds 8")
391__success __success_unpriv __retval(0)
392__naked void masking_test_in_bounds_8(void)
393{
394	asm volatile ("					\
395	r3 = -47;					\
396	r3 *= -1;					\
397	w2 = %[__imm_0];				\
398	r2 -= r3;					\
399	r2 |= r3;					\
400	r2 = -r2;					\
401	r2 s>>= 63;					\
402	r3 &= r2;					\
403	r0 = r3;					\
404	exit;						\
405"	:
406	: __imm_const(__imm_0, 47 - 1)
407	: __clobber_all);
408}
409
410char _license[] SEC("license") = "GPL";
v6.8
  1// SPDX-License-Identifier: GPL-2.0
  2/* Converted from tools/testing/selftests/bpf/verifier/masking.c */
  3
  4#include <linux/bpf.h>
  5#include <bpf/bpf_helpers.h>
  6#include "bpf_misc.h"
  7
  8SEC("socket")
  9__description("masking, test out of bounds 1")
 10__success __success_unpriv __retval(0)
 11__naked void test_out_of_bounds_1(void)
 12{
 13	asm volatile ("					\
 14	w1 = 5;						\
 15	w2 = %[__imm_0];				\
 16	r2 -= r1;					\
 17	r2 |= r1;					\
 18	r2 = -r2;					\
 19	r2 s>>= 63;					\
 20	r1 &= r2;					\
 21	r0 = r1;					\
 22	exit;						\
 23"	:
 24	: __imm_const(__imm_0, 5 - 1)
 25	: __clobber_all);
 26}
 27
 28SEC("socket")
 29__description("masking, test out of bounds 2")
 30__success __success_unpriv __retval(0)
 31__naked void test_out_of_bounds_2(void)
 32{
 33	asm volatile ("					\
 34	w1 = 1;						\
 35	w2 = %[__imm_0];				\
 36	r2 -= r1;					\
 37	r2 |= r1;					\
 38	r2 = -r2;					\
 39	r2 s>>= 63;					\
 40	r1 &= r2;					\
 41	r0 = r1;					\
 42	exit;						\
 43"	:
 44	: __imm_const(__imm_0, 1 - 1)
 45	: __clobber_all);
 46}
 47
 48SEC("socket")
 49__description("masking, test out of bounds 3")
 50__success __success_unpriv __retval(0)
 51__naked void test_out_of_bounds_3(void)
 52{
 53	asm volatile ("					\
 54	w1 = 0xffffffff;				\
 55	w2 = %[__imm_0];				\
 56	r2 -= r1;					\
 57	r2 |= r1;					\
 58	r2 = -r2;					\
 59	r2 s>>= 63;					\
 60	r1 &= r2;					\
 61	r0 = r1;					\
 62	exit;						\
 63"	:
 64	: __imm_const(__imm_0, 0xffffffff - 1)
 65	: __clobber_all);
 66}
 67
 68SEC("socket")
 69__description("masking, test out of bounds 4")
 70__success __success_unpriv __retval(0)
 71__naked void test_out_of_bounds_4(void)
 72{
 73	asm volatile ("					\
 74	w1 = 0xffffffff;				\
 75	w2 = %[__imm_0];				\
 76	r2 -= r1;					\
 77	r2 |= r1;					\
 78	r2 = -r2;					\
 79	r2 s>>= 63;					\
 80	r1 &= r2;					\
 81	r0 = r1;					\
 82	exit;						\
 83"	:
 84	: __imm_const(__imm_0, 1 - 1)
 85	: __clobber_all);
 86}
 87
 88SEC("socket")
 89__description("masking, test out of bounds 5")
 90__success __success_unpriv __retval(0)
 91__naked void test_out_of_bounds_5(void)
 92{
 93	asm volatile ("					\
 94	w1 = -1;					\
 95	w2 = %[__imm_0];				\
 96	r2 -= r1;					\
 97	r2 |= r1;					\
 98	r2 = -r2;					\
 99	r2 s>>= 63;					\
100	r1 &= r2;					\
101	r0 = r1;					\
102	exit;						\
103"	:
104	: __imm_const(__imm_0, 1 - 1)
105	: __clobber_all);
106}
107
108SEC("socket")
109__description("masking, test out of bounds 6")
110__success __success_unpriv __retval(0)
111__naked void test_out_of_bounds_6(void)
112{
113	asm volatile ("					\
114	w1 = -1;					\
115	w2 = %[__imm_0];				\
116	r2 -= r1;					\
117	r2 |= r1;					\
118	r2 = -r2;					\
119	r2 s>>= 63;					\
120	r1 &= r2;					\
121	r0 = r1;					\
122	exit;						\
123"	:
124	: __imm_const(__imm_0, 0xffffffff - 1)
125	: __clobber_all);
126}
127
128SEC("socket")
129__description("masking, test out of bounds 7")
130__success __success_unpriv __retval(0)
131__naked void test_out_of_bounds_7(void)
132{
133	asm volatile ("					\
134	r1 = 5;						\
135	w2 = %[__imm_0];				\
136	r2 -= r1;					\
137	r2 |= r1;					\
138	r2 = -r2;					\
139	r2 s>>= 63;					\
140	r1 &= r2;					\
141	r0 = r1;					\
142	exit;						\
143"	:
144	: __imm_const(__imm_0, 5 - 1)
145	: __clobber_all);
146}
147
148SEC("socket")
149__description("masking, test out of bounds 8")
150__success __success_unpriv __retval(0)
151__naked void test_out_of_bounds_8(void)
152{
153	asm volatile ("					\
154	r1 = 1;						\
155	w2 = %[__imm_0];				\
156	r2 -= r1;					\
157	r2 |= r1;					\
158	r2 = -r2;					\
159	r2 s>>= 63;					\
160	r1 &= r2;					\
161	r0 = r1;					\
162	exit;						\
163"	:
164	: __imm_const(__imm_0, 1 - 1)
165	: __clobber_all);
166}
167
168SEC("socket")
169__description("masking, test out of bounds 9")
170__success __success_unpriv __retval(0)
171__naked void test_out_of_bounds_9(void)
172{
173	asm volatile ("					\
174	r1 = 0xffffffff;				\
175	w2 = %[__imm_0];				\
176	r2 -= r1;					\
177	r2 |= r1;					\
178	r2 = -r2;					\
179	r2 s>>= 63;					\
180	r1 &= r2;					\
181	r0 = r1;					\
182	exit;						\
183"	:
184	: __imm_const(__imm_0, 0xffffffff - 1)
185	: __clobber_all);
186}
187
188SEC("socket")
189__description("masking, test out of bounds 10")
190__success __success_unpriv __retval(0)
191__naked void test_out_of_bounds_10(void)
192{
193	asm volatile ("					\
194	r1 = 0xffffffff;				\
195	w2 = %[__imm_0];				\
196	r2 -= r1;					\
197	r2 |= r1;					\
198	r2 = -r2;					\
199	r2 s>>= 63;					\
200	r1 &= r2;					\
201	r0 = r1;					\
202	exit;						\
203"	:
204	: __imm_const(__imm_0, 1 - 1)
205	: __clobber_all);
206}
207
208SEC("socket")
209__description("masking, test out of bounds 11")
210__success __success_unpriv __retval(0)
211__naked void test_out_of_bounds_11(void)
212{
213	asm volatile ("					\
214	r1 = -1;					\
215	w2 = %[__imm_0];				\
216	r2 -= r1;					\
217	r2 |= r1;					\
218	r2 = -r2;					\
219	r2 s>>= 63;					\
220	r1 &= r2;					\
221	r0 = r1;					\
222	exit;						\
223"	:
224	: __imm_const(__imm_0, 1 - 1)
225	: __clobber_all);
226}
227
228SEC("socket")
229__description("masking, test out of bounds 12")
230__success __success_unpriv __retval(0)
231__naked void test_out_of_bounds_12(void)
232{
233	asm volatile ("					\
234	r1 = -1;					\
235	w2 = %[__imm_0];				\
236	r2 -= r1;					\
237	r2 |= r1;					\
238	r2 = -r2;					\
239	r2 s>>= 63;					\
240	r1 &= r2;					\
241	r0 = r1;					\
242	exit;						\
243"	:
244	: __imm_const(__imm_0, 0xffffffff - 1)
245	: __clobber_all);
246}
247
248SEC("socket")
249__description("masking, test in bounds 1")
250__success __success_unpriv __retval(4)
251__naked void masking_test_in_bounds_1(void)
252{
253	asm volatile ("					\
254	w1 = 4;						\
255	w2 = %[__imm_0];				\
256	r2 -= r1;					\
257	r2 |= r1;					\
258	r2 = -r2;					\
259	r2 s>>= 63;					\
260	r1 &= r2;					\
261	r0 = r1;					\
262	exit;						\
263"	:
264	: __imm_const(__imm_0, 5 - 1)
265	: __clobber_all);
266}
267
268SEC("socket")
269__description("masking, test in bounds 2")
270__success __success_unpriv __retval(0)
271__naked void masking_test_in_bounds_2(void)
272{
273	asm volatile ("					\
274	w1 = 0;						\
275	w2 = %[__imm_0];				\
276	r2 -= r1;					\
277	r2 |= r1;					\
278	r2 = -r2;					\
279	r2 s>>= 63;					\
280	r1 &= r2;					\
281	r0 = r1;					\
282	exit;						\
283"	:
284	: __imm_const(__imm_0, 0xffffffff - 1)
285	: __clobber_all);
286}
287
288SEC("socket")
289__description("masking, test in bounds 3")
290__success __success_unpriv __retval(0xfffffffe)
291__naked void masking_test_in_bounds_3(void)
292{
293	asm volatile ("					\
294	w1 = 0xfffffffe;				\
295	w2 = %[__imm_0];				\
296	r2 -= r1;					\
297	r2 |= r1;					\
298	r2 = -r2;					\
299	r2 s>>= 63;					\
300	r1 &= r2;					\
301	r0 = r1;					\
302	exit;						\
303"	:
304	: __imm_const(__imm_0, 0xffffffff - 1)
305	: __clobber_all);
306}
307
308SEC("socket")
309__description("masking, test in bounds 4")
310__success __success_unpriv __retval(0xabcde)
311__naked void masking_test_in_bounds_4(void)
312{
313	asm volatile ("					\
314	w1 = 0xabcde;					\
315	w2 = %[__imm_0];				\
316	r2 -= r1;					\
317	r2 |= r1;					\
318	r2 = -r2;					\
319	r2 s>>= 63;					\
320	r1 &= r2;					\
321	r0 = r1;					\
322	exit;						\
323"	:
324	: __imm_const(__imm_0, 0xabcdef - 1)
325	: __clobber_all);
326}
327
328SEC("socket")
329__description("masking, test in bounds 5")
330__success __success_unpriv __retval(0)
331__naked void masking_test_in_bounds_5(void)
332{
333	asm volatile ("					\
334	w1 = 0;						\
335	w2 = %[__imm_0];				\
336	r2 -= r1;					\
337	r2 |= r1;					\
338	r2 = -r2;					\
339	r2 s>>= 63;					\
340	r1 &= r2;					\
341	r0 = r1;					\
342	exit;						\
343"	:
344	: __imm_const(__imm_0, 1 - 1)
345	: __clobber_all);
346}
347
348SEC("socket")
349__description("masking, test in bounds 6")
350__success __success_unpriv __retval(46)
351__naked void masking_test_in_bounds_6(void)
352{
353	asm volatile ("					\
354	w1 = 46;					\
355	w2 = %[__imm_0];				\
356	r2 -= r1;					\
357	r2 |= r1;					\
358	r2 = -r2;					\
359	r2 s>>= 63;					\
360	r1 &= r2;					\
361	r0 = r1;					\
362	exit;						\
363"	:
364	: __imm_const(__imm_0, 47 - 1)
365	: __clobber_all);
366}
367
368SEC("socket")
369__description("masking, test in bounds 7")
370__success __success_unpriv __retval(46)
371__naked void masking_test_in_bounds_7(void)
372{
373	asm volatile ("					\
374	r3 = -46;					\
375	r3 *= -1;					\
376	w2 = %[__imm_0];				\
377	r2 -= r3;					\
378	r2 |= r3;					\
379	r2 = -r2;					\
380	r2 s>>= 63;					\
381	r3 &= r2;					\
382	r0 = r3;					\
383	exit;						\
384"	:
385	: __imm_const(__imm_0, 47 - 1)
386	: __clobber_all);
387}
388
389SEC("socket")
390__description("masking, test in bounds 8")
391__success __success_unpriv __retval(0)
392__naked void masking_test_in_bounds_8(void)
393{
394	asm volatile ("					\
395	r3 = -47;					\
396	r3 *= -1;					\
397	w2 = %[__imm_0];				\
398	r2 -= r3;					\
399	r2 |= r3;					\
400	r2 = -r2;					\
401	r2 s>>= 63;					\
402	r3 &= r2;					\
403	r0 = r3;					\
404	exit;						\
405"	:
406	: __imm_const(__imm_0, 47 - 1)
407	: __clobber_all);
408}
409
410char _license[] SEC("license") = "GPL";