]> git.baikalelectronics.ru Git - kernel.git/commit
libbpf: Make bpf_map order and indices stable
authorAndrii Nakryiko <andriin@fb.com>
Fri, 10 Jan 2020 03:42:46 +0000 (19:42 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 10 Jan 2020 05:17:01 +0000 (21:17 -0800)
commit18f15d647ed2e873a7f82179fcee992077ecb14c
tree46cf10d9d9f327bc4d67268d1b91934a9303e0b5
parent66023068783b648500f004592d608f5803a0a26e
libbpf: Make bpf_map order and indices stable

Currently, libbpf re-sorts bpf_map structs after all the maps are added and
initialized, which might change their relative order and invalidate any
bpf_map pointer or index taken before that. This is inconvenient and
error-prone. For instance, it can cause .kconfig map index to point to a wrong
map.

Furthermore, libbpf itself doesn't rely on any specific ordering of bpf_maps,
so it's just an unnecessary complication right now. This patch drops sorting
of maps and makes their relative positions fixed. If efficient index is ever
needed, it's better to have a separate array of pointers as a search index,
instead of reordering bpf_map struct in-place. This will be less error-prone
and will allow multiple independent orderings, if necessary (e.g., either by
section index or by name).

Fixes: 8a519035787d ("libbpf: Support libbpf-provided extern variables")
Reported-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200110034247.1220142-1-andriin@fb.com
tools/lib/bpf/libbpf.c