Tags: leonstack/libbpf
Tags
libbpf: Add "bool skipped" to struct bpf_map Fix error: "failed to pin map: Bad file descriptor, path: /sys/fs/bpf/_rodata_str1_1." In the old kernel, the global data map will not be created, see [0]. So we should skip the pinning of the global data map to avoid bpf_object__pin_maps returning error. Therefore, when the map is not created, we mark “map->skipped" as true and then check during relocation and during pinning. Fixes: 16e0c35c6f7a ("libbpf: Load global data maps lazily on legacy kernels") Signed-off-by: Shuyi Cheng <[email protected]> Signed-off-by: Andrii Nakryiko <[email protected]> (cherry picked from commit bb14c6f)
ci: fix test on /exitstatus existence and size The condition for the test is incorrect, we want to add a default exit status if the file is empty. But [[ -s file ]] returns true if the file exists and has a size greater than zero. Let's reverse the condition. Fixes: 385b2d1 ("ci: change VM's /exitstatus format to prepare it for several results") Signed-off-by: Quentin Monnet <[email protected]>
libbpf: Fix build with latest gcc/binutils with LTO After updating to binutils 2.35, the build began to fail with an assembler error. A bug was opened on the Red Hat Bugzilla a few days later for the same issue. Work around the problem by using the new `symver` attribute (introduced in GCC 10) as needed instead of assembler directives. This addresses Red Hat ([0]) and OpenSUSE ([1]) bug reports, as well as libbpf issue ([2]). [0]: https://bugzilla.redhat.com/show_bug.cgi?id=1863059 [1]: https://bugzilla.opensuse.org/show_bug.cgi?id=1188749 [2]: Closes: libbpf#338 Co-developed-by: Patrick McCarty <[email protected]> Co-developed-by: Michal Suchanek <[email protected]> Signed-off-by: Patrick McCarty <[email protected]> Signed-off-by: Michal Suchanek <[email protected]> Signed-off-by: Andrii Nakryiko <[email protected]> Signed-off-by: Alexei Starovoitov <[email protected]> Link: https://lore.kernel.org/bpf/[email protected]
libbpf: Add support for new llvm bpf relocations LLVM patch https://reviews.llvm.org/D102712 narrowed the scope of existing R_BPF_64_64 and R_BPF_64_32 relocations, and added three new relocations, R_BPF_64_ABS64, R_BPF_64_ABS32 and R_BPF_64_NODYLD32. The main motivation is to make relocations linker friendly. This change, unfortunately, breaks libbpf build, and we will see errors like below: libbpf: ELF relo #0 in section libbpf#6 has unexpected type 2 in /home/yhs/work/bpf-next/tools/testing/selftests/bpf/bpf_tcp_nogpl.o Error: failed to link '/home/yhs/work/bpf-next/tools/testing/selftests/bpf/bpf_tcp_nogpl.o': Unknown error -22 (-22) The new relocation R_BPF_64_ABS64 is generated and libbpf linker sanity check doesn't understand it. Relocation section '.rel.struct_ops' at offset 0x1410 contains 1 entries: Offset Info Type Symbol's Value Symbol's Name 0000000000000018 0000000700000002 R_BPF_64_ABS64 0000000000000000 nogpltcp_init Look at the selftests/bpf/bpf_tcp_nogpl.c, void BPF_STRUCT_OPS(nogpltcp_init, struct sock *sk) { } SEC(".struct_ops") struct tcp_congestion_ops bpf_nogpltcp = { .init = (void *)nogpltcp_init, .name = "bpf_nogpltcp", }; The new llvm relocation scheme categorizes 'nogpltcp_init' reference as R_BPF_64_ABS64 instead of R_BPF_64_64 which is used to specify ld_imm64 relocation in the new scheme. Let us fix the linker sanity checking by including R_BPF_64_ABS64 and R_BPF_64_ABS32. There is no need to check R_BPF_64_NODYLD32 which is used for .BTF and .BTF.ext. Signed-off-by: Yonghong Song <[email protected]> Signed-off-by: Andrii Nakryiko <[email protected]> Acked-by: John Fastabend <[email protected]> Link: https://lore.kernel.org/bpf/[email protected]
pkgconfig: use literal ${prefix} to allow override Various workflows (--define-prefix, --define-variable=prefix) require variables in the pc file to use a literal so that it is overridden. Change the Makefile so that, by default and unless is specified, it is set as expected. Signed-off-by: Luca Boccassi <[email protected]>
helpers: add `struct bpf_redir_neigh` forward declaration This avoids compilation warning if `struct bpf_redir_neigh` is not provided by other kernel headers. Signed-off-by: Andrii Nakryiko <[email protected]>
libbpf: Fix XDP program load regression for old kernels Fix regression in libbpf, introduced by XDP link change, which causes XDP programs to fail to be loaded into kernel due to specified BPF_XDP expected_attach_type. While kernel doesn't enforce expected_attach_type for BPF_PROG_TYPE_XDP, some old kernels already support XDP program, but they don't yet recognize expected_attach_type field in bpf_attr, so setting it to non-zero value causes program load to fail. Luckily, libbpf already has a mechanism to deal with such cases, so just make expected_attach_type optional for XDP programs. Fixes: dc8698cac7aa ("libbpf: Add support for BPF XDP link") Reported-by: Nikita Shirokov <[email protected]> Reported-by: Udip Pant <[email protected]> Signed-off-by: Andrii Nakryiko <[email protected]> Signed-off-by: Alexei Starovoitov <[email protected]> Link: https://lore.kernel.org/bpf/[email protected] (cherry picked from commit 2200fef)
vmtests: fix selftests checkout script Fix the script. Signed-off-by: Andrii Nakryiko <[email protected]>
sync: latest libbpf changes from kernel Syncing latest libbpf commits from kernel repository. Baseline bpf-next commit: 69119673bd50b176ded34032fadd41530fb5af21 Checkpoint bpf-next commit: 4e15507fea70c0c312d79610efa46b6853ccf8e0 Baseline bpf commit: 6903cdae9f9f08d61e49c16cbef11c293e33a615 Checkpoint bpf commit: 4e15507fea70c0c312d79610efa46b6853ccf8e0 Andrii Nakryiko (1): libbpf: Forward-declare bpf_stats_type for systems with outdated UAPI headers src/bpf.h | 2 ++ 1 file changed, 2 insertions(+) -- 2.24.1
vmtests: blacklist mmap test on 5.5 5.5 kernel has a bug in kernel allowing to violate read-only access to mmap()-ed map. Disable selftest that now is failing. Signed-off-by: Andrii Nakryiko <[email protected]>
PreviousNext