On Mon, Jul 19, 2021 at 10:36 AM Martynas Pumputis <m@xxxxxxxxx> wrote: > > Add a test case to check whether an unsuccessful creation of an outer > map of a BTF-defined map-in-map destroys the inner map. > > As bpf_object__create_map() is a static function, we cannot just call it > from the test case and then check whether a map accessible via > map->inner_map_fd has been closed. Instead, we iterate over all maps and > check whether the map "$MAP_NAME.inner" does not exist. > > Signed-off-by: Martynas Pumputis <m@xxxxxxxxx> > --- > .../bpf/progs/test_map_in_map_invalid.c | 26 ++++++++ > tools/testing/selftests/bpf/test_maps.c | 64 ++++++++++++++++++- > 2 files changed, 89 insertions(+), 1 deletion(-) > create mode 100644 tools/testing/selftests/bpf/progs/test_map_in_map_invalid.c > [...] > + map = bpf_object__find_map_by_name(obj, "mim"); > + if (!map) { > + printf("Failed to load array of maps from test prog\n"); > + goto out_map_in_map; > + } > + > + err = bpf_object__load(obj); Hi Martynas, This now is producing this warning, when running test_maps: libbpf: map 'mim': failed to create: Invalid argument(-22) libbpf: failed to load object './test_map_in_map_invalid.o' It's quite confusing, I think it's better to mute this. You can do that by temporarily swapping libbpf's logger function to a no-op function, ignoring all the warnings. We do this in few other places, see libbpf_set_print(). > + if (!err) { > + printf("Loading obj supposed to fail\n"); > + goto out_map_in_map; > + } > + [...]