• Hao Xiang's avatar
    libbpf: Correctly set the kernel code version in Debian kernel. · d1d7730f
    Hao Xiang authored
    In a previous commit, Ubuntu kernel code version is correctly set
    by retrieving the information from /proc/version_signature.
    
    commit<5b3d7298>
    (libbpf: Improve LINUX_VERSION_CODE detection)
    
    The /proc/version_signature file doesn't present in at least the
    older versions of Debian distributions (eg, Debian 9, 10). The Debian
    kernel has a similar issue where the release information from uname()
    syscall doesn't give the kernel code version that matches what the
    kernel actually expects. Below is an example content from Debian 10.
    
    release: 4.19.0-23-amd64
    version: #1 SMP Debian 4.19.269-1 (2022-12-20) x86_64
    
    Debian reports incorrect kernel version in utsname::release returned
    by uname() syscall, which in older kernels (Debian 9, 10) leads to
    kprobe BPF programs failing to load due to the version check mismatch.
    
    Fortunately, the correct kernel code version presents in the
    utsname::version returned by uname() syscall in Debian kernels. This
    change adds another get kernel version function to handle Debian in
    addition to the previously added get kernel version function to handle
    Ubuntu. Some minor refactoring work is also done to make the code more
    readable.
    Signed-off-by: default avatarHao Xiang <hao.xiang@bytedance.com>
    Signed-off-by: default avatarHo-Ren (Jack) Chuang <horenchuang@bytedance.com>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20230203234842.2933903-1-hao.xiang@bytedance.com
    d1d7730f
libbpf_probes.c 11.3 KB