|
62 | 62 | #include "verifier_value.skel.h"
|
63 | 63 | #include "verifier_value_illegal_alu.skel.h"
|
64 | 64 | #include "verifier_value_or_null.skel.h"
|
| 65 | +#include "verifier_value_ptr_arith.skel.h" |
65 | 66 | #include "verifier_var_off.skel.h"
|
66 | 67 | #include "verifier_xadd.skel.h"
|
67 | 68 | #include "verifier_xdp.skel.h"
|
@@ -164,29 +165,50 @@ void test_verifier_xadd(void) { RUN(verifier_xadd); }
|
164 | 165 | void test_verifier_xdp(void) { RUN(verifier_xdp); }
|
165 | 166 | void test_verifier_xdp_direct_packet_access(void) { RUN(verifier_xdp_direct_packet_access); }
|
166 | 167 |
|
167 |
| -static int init_array_access_maps(struct bpf_object *obj) |
| 168 | +static int init_test_val_map(struct bpf_object *obj, char *map_name) |
168 | 169 | {
|
169 |
| - struct bpf_map *array_ro; |
170 | 170 | struct test_val value = {
|
171 | 171 | .index = (6 + 1) * sizeof(int),
|
172 | 172 | .foo[6] = 0xabcdef12,
|
173 | 173 | };
|
| 174 | + struct bpf_map *map; |
174 | 175 | int err, key = 0;
|
175 | 176 |
|
176 |
| - array_ro = bpf_object__find_map_by_name(obj, "map_array_ro"); |
177 |
| - if (!ASSERT_OK_PTR(array_ro, "lookup map_array_ro")) |
| 177 | + map = bpf_object__find_map_by_name(obj, map_name); |
| 178 | + if (!map) { |
| 179 | + PRINT_FAIL("Can't find map '%s'\n", map_name); |
178 | 180 | return -EINVAL;
|
| 181 | + } |
179 | 182 |
|
180 |
| - err = bpf_map_update_elem(bpf_map__fd(array_ro), &key, &value, 0); |
181 |
| - if (!ASSERT_OK(err, "map_array_ro update")) |
| 183 | + err = bpf_map_update_elem(bpf_map__fd(map), &key, &value, 0); |
| 184 | + if (err) { |
| 185 | + PRINT_FAIL("Error while updating map '%s': %d\n", map_name, err); |
182 | 186 | return err;
|
| 187 | + } |
183 | 188 |
|
184 | 189 | return 0;
|
185 | 190 | }
|
186 | 191 |
|
| 192 | +static int init_array_access_maps(struct bpf_object *obj) |
| 193 | +{ |
| 194 | + return init_test_val_map(obj, "map_array_ro"); |
| 195 | +} |
| 196 | + |
187 | 197 | void test_verifier_array_access(void)
|
188 | 198 | {
|
189 | 199 | run_tests_aux("verifier_array_access",
|
190 | 200 | verifier_array_access__elf_bytes,
|
191 | 201 | init_array_access_maps);
|
192 | 202 | }
|
| 203 | + |
| 204 | +static int init_value_ptr_arith_maps(struct bpf_object *obj) |
| 205 | +{ |
| 206 | + return init_test_val_map(obj, "map_array_48b"); |
| 207 | +} |
| 208 | + |
| 209 | +void test_verifier_value_ptr_arith(void) |
| 210 | +{ |
| 211 | + run_tests_aux("verifier_value_ptr_arith", |
| 212 | + verifier_value_ptr_arith__elf_bytes, |
| 213 | + init_value_ptr_arith_maps); |
| 214 | +} |
0 commit comments