iproute2/lib
Quentin Monnet 1a7d3ad8a5 bpf: initialise map symbol before retrieving and comparing its type
In order to compare BPF map symbol type correctly in regard to the
latest LLVM, commit 7a04dd84a7 ("bpf: check map symbol type properly
with newer llvm compiler") compares map symbol type to both NOTYPE and
OBJECT. To do so, it first retrieves the type from "sym.st_info" and
stores it into a temporary variable.

However, the type is collected from the symbol "sym" before this latter
symbol is actually updated. gelf_getsym() is called after that and
updates "sym", and when comparison with OBJECT or NOTYPE happens it is
done on the type of the symbol collected in the previous passage of the
loop (or on an uninitialised symbol on the first passage). This may
eventually break map collection from the ELF file.

Fix this by assigning the type to the temporary variable only after the
call to gelf_getsym().

Fixes: 7a04dd84a7 ("bpf: check map symbol type properly with newer llvm compiler")
Reported-by: Ron Philip <ron.philip@netronome.com>
Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com>
Reviewed-by: Jiong Wang <jiong.wang@netronome.com>
Acked-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2018-11-21 09:36:30 -08:00
..
Makefile lib: Correct object file dependencies 2018-02-16 08:14:18 -08:00
bpf.c bpf: initialise map symbol before retrieving and comparing its type 2018-11-21 09:36:30 -08:00
color.c lib/color: make local functions static 2018-11-19 11:42:44 -08:00
coverity_model.c scrub out whitespace issues 2016-03-27 10:50:14 -07:00
dnet_ntop.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
dnet_pton.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
exec.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
fs.c Include bsd/string.h only in include/utils.h 2018-11-05 08:38:32 -08:00
inet_proto.c Include bsd/string.h only in include/utils.h 2018-11-05 08:38:32 -08:00
ipx_ntop.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
ipx_pton.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
json_print.c json: make 0xhex handle u64 2018-10-15 09:32:18 -07:00
json_writer.c iproute: make clang happy 2018-08-30 07:58:09 -07:00
libgenl.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
libnetlink.c libnetlnk: unused and local functions cleanup 2018-11-19 11:42:44 -08:00
ll_addr.c lib/ll_addr: whitespace and indent cleanup 2018-11-19 11:42:44 -08:00
ll_map.c lib/ll_map: make local function static 2018-11-19 11:42:44 -08:00
ll_proto.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
ll_types.c drop unneeded include of syslog.h 2017-11-12 16:22:36 -08:00
mpls_ntop.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
mpls_pton.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
names.c tc: drop unused name_to_id function 2018-11-19 11:42:44 -08:00
namespace.c lib/namespace: avoid double-mounting a /sys 2018-07-27 13:40:12 -07:00
rt_names.c iproute2: Add support for a few routing protocols 2018-06-11 11:18:30 -07:00
utils.c lib/utils: make local functions static 2018-11-19 11:42:44 -08:00