On Tue, 20 Nov 2018 01:26:27 +0000 Quentin Monnet <quentin.mon...@netronome.com> wrote:
> In order to compare BPF map symbol type correctly in regard to the > latest LLVM, commit 7a04dd84a7f9 ("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: 7a04dd84a7f9 ("bpf: check map symbol type properly with newer llvm > compiler") > Reported-by: Ron Philip <ron.phi...@netronome.com> > Signed-off-by: Quentin Monnet <quentin.mon...@netronome.com> > Reviewed-by: Jiong Wang <jiong.w...@netronome.com> > --- > lib/bpf.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > Applied.