Ubuntu reports incorrect kernel version through uname(), which on older kernels leads to kprobe BPF programs failing to load due to the version check mismatch. Accommodate Ubuntu's quirks with LINUX_VERSION_CODE by using Ubuntu-specific /proc/version_code to fetch major/minor/patch versions to form LINUX_VERSION_CODE. While at it, consolide libbpf's kernel version detection code between libbpf.c and libbpf_probes.c. [0] Closes: https://github.com/libbpf/libbpf/issues/421 Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Yonghong Song <yhs@fb.com> Link: https://lore.kernel.org/bpf/20211222231003.2334940-1-andrii@kernel.org |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| bpf.c | ||
| bpf.h | ||
| bpf_core_read.h | ||
| bpf_endian.h | ||
| bpf_gen_internal.h | ||
| bpf_helpers.h | ||
| bpf_prog_linfo.c | ||
| bpf_tracing.h | ||
| btf.c | ||
| btf.h | ||
| btf_dump.c | ||
| Build | ||
| gen_loader.c | ||
| hashmap.c | ||
| hashmap.h | ||
| libbpf.c | ||
| libbpf.h | ||
| libbpf.map | ||
| libbpf.pc.template | ||
| libbpf_common.h | ||
| libbpf_errno.c | ||
| libbpf_internal.h | ||
| libbpf_legacy.h | ||
| libbpf_probes.c | ||
| libbpf_version.h | ||
| linker.c | ||
| Makefile | ||
| netlink.c | ||
| nlattr.c | ||
| nlattr.h | ||
| relo_core.c | ||
| relo_core.h | ||
| ringbuf.c | ||
| skel_internal.h | ||
| str_error.c | ||
| str_error.h | ||
| strset.c | ||
| strset.h | ||
| xsk.c | ||
| xsk.h | ||