• Quentin Monnet's avatar
    tools: bpftool: pass an argument to silence open_obj_pinned() · f120919f
    Quentin Monnet authored
    Function open_obj_pinned() prints error messages when it fails to open a
    link in the BPF virtual file system. However, in some occasions it is
    not desirable to print an error, for example when we parse all links
    under the bpffs root, and the error is due to some paths actually being
    symbolic links.
    
    Example output:
    
        # ls -l /sys/fs/bpf/
        lrwxrwxrwx 1 root root 0 Oct 18 19:00 ip -> /sys/fs/bpf/tc/
        drwx------ 3 root root 0 Oct 18 19:00 tc
        lrwxrwxrwx 1 root root 0 Oct 18 19:00 xdp -> /sys/fs/bpf/tc/
    
        # bpftool --bpffs prog show
        Error: bpf obj get (/sys/fs/bpf): Permission denied
        Error: bpf obj get (/sys/fs/bpf): Permission denied
    
        # strace -e bpf bpftool --bpffs prog show
        bpf(BPF_OBJ_GET, {pathname="/sys/fs/bpf/ip", bpf_fd=0}, 72) = -1 EACCES (Permission denied)
        Error: bpf obj get (/sys/fs/bpf): Permission denied
        bpf(BPF_OBJ_GET, {pathname="/sys/fs/bpf/xdp", bpf_fd=0}, 72) = -1 EACCES (Permission denied)
        Error: bpf obj get (/sys/fs/bpf): Permission denied
        ...
    
    To fix it, pass a bool as a second argument to the function, and prevent
    it from printing an error when the argument is set to true.
    Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
    Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    f120919f
common.c 12.8 KB