]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
libbpf: Properly ignore STT_SECTION symbols in legacy map definitions
authorToke Høiland-Jørgensen <toke@redhat.com>
Wed, 29 Sep 2021 21:38:37 +0000 (23:38 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Wed, 29 Sep 2021 22:50:32 +0000 (15:50 -0700)
The previous patch to ignore STT_SECTION symbols only added the ignore
condition in one of them. This fails if there's more than one map
definition in the 'maps' section, because the subsequent modulus check will
fail, resulting in error messages like:

libbpf: elf: unable to determine legacy map definition size in ./xdpdump_xdp.o

Fix this by also ignoring STT_SECTION in the first loop.

Fixes: c3e8c44a9063 ("libbpf: Ignore STT_SECTION symbols in 'maps' section")
Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20210929213837.832449-1-toke@redhat.com
tools/lib/bpf/libbpf.c

index 1c859b32968dec26364c3e55034c0c5348c858e9..7544d7d09160980ae5382c5acfac9b13a7628065 100644 (file)
@@ -1868,6 +1868,8 @@ static int bpf_object__init_user_maps(struct bpf_object *obj, bool strict)
                        continue;
                if (sym.st_shndx != obj->efile.maps_shndx)
                        continue;
+               if (GELF_ST_TYPE(sym.st_info) == STT_SECTION)
+                       continue;
                nr_maps++;
        }
        /* Assume equally sized map definitions */