selftests/bpf: Improve inner_map test coverage.
authorAlexei Starovoitov <ast@kernel.org>
Wed, 1 Dec 2021 18:10:36 +0000 (10:10 -0800)
committerAndrii Nakryiko <andrii@kernel.org>
Thu, 2 Dec 2021 19:18:36 +0000 (11:18 -0800)
Check that hash and array inner maps are properly initialized.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20211201181040.23337-14-alexei.starovoitov@gmail.com
tools/testing/selftests/bpf/progs/map_ptr_kern.c

index b1b711d..b64df94 100644 (file)
@@ -334,9 +334,11 @@ static inline int check_lpm_trie(void)
        return 1;
 }
 
+#define INNER_MAX_ENTRIES 1234
+
 struct inner_map {
        __uint(type, BPF_MAP_TYPE_ARRAY);
-       __uint(max_entries, 1);
+       __uint(max_entries, INNER_MAX_ENTRIES);
        __type(key, __u32);
        __type(value, __u32);
 } inner_map SEC(".maps");
@@ -348,7 +350,7 @@ struct {
        __type(value, __u32);
        __array(values, struct {
                __uint(type, BPF_MAP_TYPE_ARRAY);
-               __uint(max_entries, 1);
+               __uint(max_entries, INNER_MAX_ENTRIES);
                __type(key, __u32);
                __type(value, __u32);
        });
@@ -360,8 +362,13 @@ static inline int check_array_of_maps(void)
 {
        struct bpf_array *array_of_maps = (struct bpf_array *)&m_array_of_maps;
        struct bpf_map *map = (struct bpf_map *)&m_array_of_maps;
+       struct bpf_array *inner_map;
+       int key = 0;
 
        VERIFY(check_default(&array_of_maps->map, map));
+       inner_map = bpf_map_lookup_elem(array_of_maps, &key);
+       VERIFY(inner_map != 0);
+       VERIFY(inner_map->map.max_entries == INNER_MAX_ENTRIES);
 
        return 1;
 }
@@ -382,8 +389,13 @@ static inline int check_hash_of_maps(void)
 {
        struct bpf_htab *hash_of_maps = (struct bpf_htab *)&m_hash_of_maps;
        struct bpf_map *map = (struct bpf_map *)&m_hash_of_maps;
+       struct bpf_htab *inner_map;
+       int key = 2;
 
        VERIFY(check_default(&hash_of_maps->map, map));
+       inner_map = bpf_map_lookup_elem(hash_of_maps, &key);
+       VERIFY(inner_map != 0);
+       VERIFY(inner_map->map.max_entries == INNER_MAX_ENTRIES);
 
        return 1;
 }