~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/bpf/verifier/direct_value_access.c

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 {
  2         "direct map access, write test 1",
  3         .insns = {
  4         BPF_MOV64_IMM(BPF_REG_0, 1),
  5         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 0),
  6         BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
  7         BPF_EXIT_INSN(),
  8         },
  9         .fixup_map_array_48b = { 1 },
 10         .result = ACCEPT,
 11         .retval = 1,
 12 },
 13 {
 14         "direct map access, write test 2",
 15         .insns = {
 16         BPF_MOV64_IMM(BPF_REG_0, 1),
 17         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 8),
 18         BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
 19         BPF_EXIT_INSN(),
 20         },
 21         .fixup_map_array_48b = { 1 },
 22         .result = ACCEPT,
 23         .retval = 1,
 24 },
 25 {
 26         "direct map access, write test 3",
 27         .insns = {
 28         BPF_MOV64_IMM(BPF_REG_0, 1),
 29         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 8),
 30         BPF_ST_MEM(BPF_DW, BPF_REG_1, 8, 4242),
 31         BPF_EXIT_INSN(),
 32         },
 33         .fixup_map_array_48b = { 1 },
 34         .result = ACCEPT,
 35         .retval = 1,
 36 },
 37 {
 38         "direct map access, write test 4",
 39         .insns = {
 40         BPF_MOV64_IMM(BPF_REG_0, 1),
 41         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 40),
 42         BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
 43         BPF_EXIT_INSN(),
 44         },
 45         .fixup_map_array_48b = { 1 },
 46         .result = ACCEPT,
 47         .retval = 1,
 48 },
 49 {
 50         "direct map access, write test 5",
 51         .insns = {
 52         BPF_MOV64_IMM(BPF_REG_0, 1),
 53         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 32),
 54         BPF_ST_MEM(BPF_DW, BPF_REG_1, 8, 4242),
 55         BPF_EXIT_INSN(),
 56         },
 57         .fixup_map_array_48b = { 1 },
 58         .result = ACCEPT,
 59         .retval = 1,
 60 },
 61 {
 62         "direct map access, write test 6",
 63         .insns = {
 64         BPF_MOV64_IMM(BPF_REG_0, 1),
 65         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 40),
 66         BPF_ST_MEM(BPF_DW, BPF_REG_1, 4, 4242),
 67         BPF_EXIT_INSN(),
 68         },
 69         .fixup_map_array_48b = { 1 },
 70         .result = REJECT,
 71         .errstr = "R1 min value is outside of the allowed memory range",
 72         .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
 73 },
 74 {
 75         "direct map access, write test 7",
 76         .insns = {
 77         BPF_MOV64_IMM(BPF_REG_0, 1),
 78         BPF_LD_MAP_VALUE(BPF_REG_1, 0, -1),
 79         BPF_ST_MEM(BPF_DW, BPF_REG_1, 4, 4242),
 80         BPF_EXIT_INSN(),
 81         },
 82         .fixup_map_array_48b = { 1 },
 83         .result = REJECT,
 84         .errstr = "direct value offset of 4294967295 is not allowed",
 85 },
 86 {
 87         "direct map access, write test 8",
 88         .insns = {
 89         BPF_MOV64_IMM(BPF_REG_0, 1),
 90         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 1),
 91         BPF_ST_MEM(BPF_DW, BPF_REG_1, -1, 4242),
 92         BPF_EXIT_INSN(),
 93         },
 94         .fixup_map_array_48b = { 1 },
 95         .result = ACCEPT,
 96         .retval = 1,
 97 },
 98 {
 99         "direct map access, write test 9",
100         .insns = {
101         BPF_MOV64_IMM(BPF_REG_0, 1),
102         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 48),
103         BPF_ST_MEM(BPF_DW, BPF_REG_1, 0, 4242),
104         BPF_EXIT_INSN(),
105         },
106         .fixup_map_array_48b = { 1 },
107         .result = REJECT,
108         .errstr = "invalid access to map value pointer",
109 },
110 {
111         "direct map access, write test 10",
112         .insns = {
113         BPF_MOV64_IMM(BPF_REG_0, 1),
114         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 47),
115         BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 4),
116         BPF_EXIT_INSN(),
117         },
118         .fixup_map_array_48b = { 1 },
119         .result = ACCEPT,
120         .retval = 1,
121 },
122 {
123         "direct map access, write test 11",
124         .insns = {
125         BPF_MOV64_IMM(BPF_REG_0, 1),
126         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 48),
127         BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 4),
128         BPF_EXIT_INSN(),
129         },
130         .fixup_map_array_48b = { 1 },
131         .result = REJECT,
132         .errstr = "invalid access to map value pointer",
133 },
134 {
135         "direct map access, write test 12",
136         .insns = {
137         BPF_MOV64_IMM(BPF_REG_0, 1),
138         BPF_LD_MAP_VALUE(BPF_REG_1, 0, (1<<29)),
139         BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 4),
140         BPF_EXIT_INSN(),
141         },
142         .fixup_map_array_48b = { 1 },
143         .result = REJECT,
144         .errstr = "direct value offset of 536870912 is not allowed",
145 },
146 {
147         "direct map access, write test 13",
148         .insns = {
149         BPF_MOV64_IMM(BPF_REG_0, 1),
150         BPF_LD_MAP_VALUE(BPF_REG_1, 0, (1<<29)-1),
151         BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 4),
152         BPF_EXIT_INSN(),
153         },
154         .fixup_map_array_48b = { 1 },
155         .result = REJECT,
156         .errstr = "invalid access to map value pointer, value_size=48 off=536870911",
157 },
158 {
159         "direct map access, write test 14",
160         .insns = {
161         BPF_MOV64_IMM(BPF_REG_0, 1),
162         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 47),
163         BPF_LD_MAP_VALUE(BPF_REG_2, 0, 46),
164         BPF_ST_MEM(BPF_H, BPF_REG_2, 0, 0xffff),
165         BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1, 0),
166         BPF_EXIT_INSN(),
167         },
168         .fixup_map_array_48b = { 1, 3 },
169         .result = ACCEPT,
170         .retval = 0xff,
171 },
172 {
173         "direct map access, write test 15",
174         .insns = {
175         BPF_MOV64_IMM(BPF_REG_0, 1),
176         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 46),
177         BPF_LD_MAP_VALUE(BPF_REG_2, 0, 46),
178         BPF_ST_MEM(BPF_H, BPF_REG_2, 0, 0xffff),
179         BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 0),
180         BPF_EXIT_INSN(),
181         },
182         .fixup_map_array_48b = { 1, 3 },
183         .result = ACCEPT,
184         .retval = 0xffff,
185 },
186 {
187         "direct map access, write test 16",
188         .insns = {
189         BPF_MOV64_IMM(BPF_REG_0, 1),
190         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 46),
191         BPF_LD_MAP_VALUE(BPF_REG_2, 0, 47),
192         BPF_ST_MEM(BPF_H, BPF_REG_2, 0, 0xffff),
193         BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 0),
194         BPF_EXIT_INSN(),
195         },
196         .fixup_map_array_48b = { 1, 3 },
197         .result = REJECT,
198         .errstr = "invalid access to map value, value_size=48 off=47 size=2",
199         .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
200 },
201 {
202         "direct map access, write test 17",
203         .insns = {
204         BPF_MOV64_IMM(BPF_REG_0, 1),
205         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 46),
206         BPF_LD_MAP_VALUE(BPF_REG_2, 0, 46),
207         BPF_ST_MEM(BPF_H, BPF_REG_2, 1, 0xffff),
208         BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 0),
209         BPF_EXIT_INSN(),
210         },
211         .fixup_map_array_48b = { 1, 3 },
212         .result = REJECT,
213         .errstr = "invalid access to map value, value_size=48 off=47 size=2",
214         .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
215 },
216 {
217         "direct map access, write test 18",
218         .insns = {
219         BPF_MOV64_IMM(BPF_REG_0, 1),
220         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 0),
221         BPF_ST_MEM(BPF_H, BPF_REG_1, 0, 42),
222         BPF_EXIT_INSN(),
223         },
224         .fixup_map_array_small = { 1 },
225         .result = REJECT,
226         .errstr = "R1 min value is outside of the allowed memory range",
227 },
228 {
229         "direct map access, write test 19",
230         .insns = {
231         BPF_MOV64_IMM(BPF_REG_0, 1),
232         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 0),
233         BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 42),
234         BPF_EXIT_INSN(),
235         },
236         .fixup_map_array_small = { 1 },
237         .result = ACCEPT,
238         .retval = 1,
239 },
240 {
241         "direct map access, write test 20",
242         .insns = {
243         BPF_MOV64_IMM(BPF_REG_0, 1),
244         BPF_LD_MAP_VALUE(BPF_REG_1, 0, 1),
245         BPF_ST_MEM(BPF_B, BPF_REG_1, 0, 42),
246         BPF_EXIT_INSN(),
247         },
248         .fixup_map_array_small = { 1 },
249         .result = REJECT,
250         .errstr = "invalid access to map value pointer",
251 },
252 {
253         "direct map access, invalid insn test 1",
254         .insns = {
255         BPF_MOV64_IMM(BPF_REG_0, 1),
256         BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, 0, 1, 0, 47),
257         BPF_EXIT_INSN(),
258         },
259         .fixup_map_array_48b = { 1 },
260         .result = REJECT,
261         .errstr = "invalid bpf_ld_imm64 insn",
262 },
263 {
264         "direct map access, invalid insn test 2",
265         .insns = {
266         BPF_MOV64_IMM(BPF_REG_0, 1),
267         BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, 1, 0, 0, 47),
268         BPF_EXIT_INSN(),
269         },
270         .fixup_map_array_48b = { 1 },
271         .result = REJECT,
272         .errstr = "BPF_LD_IMM64 uses reserved fields",
273 },
274 {
275         "direct map access, invalid insn test 3",
276         .insns = {
277         BPF_MOV64_IMM(BPF_REG_0, 1),
278         BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, ~0, 0, 0, 47),
279         BPF_EXIT_INSN(),
280         },
281         .fixup_map_array_48b = { 1 },
282         .result = REJECT,
283         .errstr = "BPF_LD_IMM64 uses reserved fields",
284 },
285 {
286         "direct map access, invalid insn test 4",
287         .insns = {
288         BPF_MOV64_IMM(BPF_REG_0, 1),
289         BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, 0, ~0, 0, 47),
290         BPF_EXIT_INSN(),
291         },
292         .fixup_map_array_48b = { 1 },
293         .result = REJECT,
294         .errstr = "invalid bpf_ld_imm64 insn",
295 },
296 {
297         "direct map access, invalid insn test 5",
298         .insns = {
299         BPF_MOV64_IMM(BPF_REG_0, 1),
300         BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_VALUE, ~0, ~0, 0, 47),
301         BPF_EXIT_INSN(),
302         },
303         .fixup_map_array_48b = { 1 },
304         .result = REJECT,
305         .errstr = "invalid bpf_ld_imm64 insn",
306 },
307 {
308         "direct map access, invalid insn test 6",
309         .insns = {
310         BPF_MOV64_IMM(BPF_REG_0, 1),
311         BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_FD, ~0, 0, 0, 0),
312         BPF_EXIT_INSN(),
313         },
314         .fixup_map_array_48b = { 1 },
315         .result = REJECT,
316         .errstr = "BPF_LD_IMM64 uses reserved fields",
317 },
318 {
319         "direct map access, invalid insn test 7",
320         .insns = {
321         BPF_MOV64_IMM(BPF_REG_0, 1),
322         BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_FD, 0, ~0, 0, 0),
323         BPF_EXIT_INSN(),
324         },
325         .fixup_map_array_48b = { 1 },
326         .result = REJECT,
327         .errstr = "invalid bpf_ld_imm64 insn",
328 },
329 {
330         "direct map access, invalid insn test 8",
331         .insns = {
332         BPF_MOV64_IMM(BPF_REG_0, 1),
333         BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_FD, ~0, ~0, 0, 0),
334         BPF_EXIT_INSN(),
335         },
336         .fixup_map_array_48b = { 1 },
337         .result = REJECT,
338         .errstr = "invalid bpf_ld_imm64 insn",
339 },
340 {
341         "direct map access, invalid insn test 9",
342         .insns = {
343         BPF_MOV64_IMM(BPF_REG_0, 1),
344         BPF_LD_IMM64_RAW_FULL(BPF_REG_1, BPF_PSEUDO_MAP_FD, 0, 0, 0, 47),
345         BPF_EXIT_INSN(),
346         },
347         .fixup_map_array_48b = { 1 },
348         .result = REJECT,
349         .errstr = "unrecognized bpf_ld_imm64 insn",
350 },
351 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php