linux/tools/lib/bpf
Andrii Nakryiko bc308d011a libbpf: call dup2() syscall directly
We've ran into issues with using dup2() API in production setting, where
libbpf is linked into large production environment and ends up calling
unintended custom implementations of dup2(). These custom implementations
don't provide atomic FD replacement guarantees of dup2() syscall,
leading to subtle and hard to debug issues.

To prevent this in the future and guarantee that no libc implementation
will do their own custom non-atomic dup2() implementation, call dup2()
syscall directly with syscall(SYS_dup2).

Note that some architectures don't seem to provide dup2 and have dup3
instead. Try to detect and pick best syscall.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Song Liu <song@kernel.org>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/r/20240119210201.1295511-1-andrii@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-01-23 15:13:47 -08:00
..
.gitignore
bpf.c Revert BPF token-related functionality 2023-12-19 08:23:03 -08:00
bpf.h Revert BPF token-related functionality 2023-12-19 08:23:03 -08:00
bpf_core_read.h libbpf: Add BPF_CORE_WRITE_BITFIELD() macro 2023-12-13 15:42:19 -08:00
bpf_endian.h
bpf_gen_internal.h libbpf: Support kfunc detection in light skeleton. 2023-03-22 09:31:05 -07:00
bpf_helpers.h libbpf: add __arg_xxx macros for annotating global func args 2023-12-19 18:06:47 -08:00
bpf_prog_linfo.c
bpf_tracing.h libbpf: Fix syscall access arguments on riscv 2023-10-04 13:19:13 -07:00
btf.c Revert BPF token-related functionality 2023-12-19 08:23:03 -08:00
btf.h
btf_dump.c libbpf: btf_dump_type_data_check_overflow needs to consider BTF_MEMBER_BITFIELD_SIZE 2023-05-01 15:37:38 +02:00
Build Revert BPF token-related functionality 2023-12-19 08:23:03 -08:00
elf.c Revert BPF token-related functionality 2023-12-19 08:23:03 -08:00
gen_loader.c libbpf: Store zero fd to fd_array for loader kfunc relocation 2023-05-16 22:09:23 -07:00
hashmap.c
hashmap.h libbpf: Remove HASHMAP_INIT static initialization helper 2023-07-11 09:40:05 -07:00
libbpf.c libbpf: Apply map_set_def_max_entries() for inner_maps on creation 2024-01-23 14:43:12 -08:00
libbpf.h Revert BPF token-related functionality 2023-12-19 08:23:03 -08:00
libbpf.map Revert BPF token-related functionality 2023-12-19 08:23:03 -08:00
libbpf.pc.template
libbpf_common.h libbpf: Fix potential uninitialized tail padding with LIBBPF_OPTS_RESET 2023-11-09 19:07:51 -08:00
libbpf_errno.c libbpf: Optimized return value in libbpf_strerror when errno is libbpf errno 2022-12-14 18:39:33 +01:00
libbpf_internal.h libbpf: call dup2() syscall directly 2024-01-23 15:13:47 -08:00
libbpf_legacy.h
libbpf_probes.c Revert BPF token-related functionality 2023-12-19 08:23:03 -08:00
libbpf_version.h libbpf: Start v1.4 development cycle 2023-11-23 22:49:41 +01:00
linker.c libbpf: Skip DWARF sections in linker sanity check 2023-12-21 10:05:15 +01:00
Makefile libbpf: fix typos in Makefile 2023-08-02 13:58:51 -07:00
netlink.c xsk: add new netlink attribute dedicated for ZC max frags 2023-07-19 09:56:49 -07:00
nlattr.c libbpf: Fix alen calculation in libbpf_nla_dump_errormsg() 2023-02-10 15:27:22 -08:00
nlattr.h libbpf: add API to get XDP/XSK supported features 2023-02-02 20:48:24 -08:00
relo_core.c libbpf: fix signedness determination in CO-RE relo handling logic 2023-08-23 21:13:48 -07:00
relo_core.h
ringbuf.c libbpf: Add ring__consume 2023-09-25 16:22:43 -07:00
skel_internal.h
str_error.c
str_error.h Revert BPF token-related functionality 2023-12-19 08:23:03 -08:00
strset.c
strset.h
usdt.bpf.h libbpf: Use local includes inside the library 2023-08-04 15:06:46 -07:00
usdt.c libbpf: Add uprobe multi link support to bpf_program__attach_usdt 2023-08-21 15:51:26 -07:00
zip.c libbpf: Ignore warnings about "inefficient alignment" 2023-03-16 18:20:08 +01:00
zip.h libbpf: Implement basic zip archive parsing support 2023-03-01 16:05:34 -08:00