• Yonghong Song's avatar
    tools/bpftool: move set_max_rlimit() before __bpf_object__open_xattr() · ac4e0e05
    Yonghong Song authored
    For a host which has a lower rlimit for max locked memory (e.g., 64KB),
    the following error occurs in one of our production systems:
      # /usr/sbin/bpftool prog load /paragon/pods/52877437/home/mark.o \
        /sys/fs/bpf/paragon_mark_21 type cgroup/skb \
        map idx 0 pinned /sys/fs/bpf/paragon_map_21
      libbpf: Error in bpf_object__probe_name():Operation not permitted(1).
        Couldn't load basic 'r0 = 0' BPF program.
      Error: failed to open object file
    
    The reason is due to low locked memory during bpf_object__probe_name()
    which probes whether program name is supported in kernel or not
    during __bpf_object__open_xattr().
    
    bpftool program load already tries to relax mlock rlimit before
    bpf_object__load(). Let us move set_max_rlimit() before
    __bpf_object__open_xattr(), which fixed the issue here.
    
    Fixes: 47eff617 ("bpf, libbpf: introduce bpf_object__probe_caps to test BPF capabilities")
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    ac4e0e05
prog.c 24.2 KB