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.


Reply via email to