• Jakub Kicinski's avatar
    tools: bpftool: fix crash with un-owned prog arrays · 8c79b356
    Jakub Kicinski authored
    Prog arrays don't have 'owner_prog_type' and 'owner_jited'
    fields in their fdinfo when they are created.  Those fields
    are set and reported when first program is checked for
    compatibility by bpf_prog_array_compatible().
    
    This means that bpftool cannot expect the fields to always
    be there.  Currently trying to show maps on a system with
    an un-owned prog array leads to a crash:
    
    $ bpftool map show
    389: prog_array  name tail_call_map  flags 0x0
    Error: key 'owner_prog_type' not found in fdinfo
    Error: key 'owner_jited' not found in fdinfo
           key 4B  value 4B  max_entries 4  memlock 4096B
           Segmentation fault (core dumped)
    
    We pass a NULL pointer to atoi().
    
    Remove the assumption that fdinfo keys are always present.
    Add missing validations and remove the p_err() calls which
    may lead to broken JSON output as caller will not propagate
    the failure.
    
    Fixes: 99a44bef ("tools: bpftool: add owner_prog_type and owner_jited to bpftool output")
    Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
    Acked-by: default avatarSong Liu <songliubraving@fb.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    8c79b356
map.c 25.7 KB