• Rong Tao's avatar
    samples/bpf: Fix sockex3 error: Missing BPF prog type · e5659e4e
    Rong Tao authored
    since commit 450b167f("libbpf: clean up SEC() handling"),
    sec_def_matches() does not recognize "socket/xxx" as "socket", therefore,
    the BPF program type is not recognized.
    
    Instead of sockex3_user.c parsing section names to get the BPF program fd.
    We use the program array map to assign a static index to each BPF program
    (get inspired by selftests/bpf progs/test_prog_array_init.c).
    Therefore, use SEC("socket") as section name instead of SEC("socket/xxx"),
    so that the BPF program is parsed to SOCKET_FILTER type. The "missing BPF
    prog type" problem is solved.
    
    How to reproduce this error:
    $ cd samples/bpf
    $ sudo ./sockex3
    libbpf: prog 'bpf_func_PARSE_IP': missing BPF prog type, check ELF section name 'socket/3'
    libbpf: prog 'bpf_func_PARSE_IP': failed to load: -22
    libbpf: failed to load object './sockex3_kern.o'
    ERROR: loading BPF object file failed
    Signed-off-by: default avatarRong Tao <rongtao@cestc.cn>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/tencent_EBA3C18864069E42175946973C2ACBAF5408@qq.com
    e5659e4e
sockex3_kern.c 6.47 KB