libbpf: Call memfd_create() syscall directly
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 1 Feb 2024 17:20:23 +0000 (09:20 -0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Thu, 1 Feb 2024 21:16:11 +0000 (22:16 +0100)
commit9fa5e1a180aa639fb156a16e453ab820b7e7860b
tree31cb7e6da88097ca1880c6a8776ee4e56b4e469b
parent1581e5118e485e82cfb5d04d636a79aaefb6f266
libbpf: Call memfd_create() syscall directly

Some versions of Android do not implement memfd_create() wrapper in
their libc implementation, leading to build failures ([0]). On the other
hand, memfd_create() is available as a syscall on quite old kernels
(3.17+, while bpf() syscall itself is available since 3.18+), so it is
ok to assume that syscall availability and call into it with syscall()
helper to avoid Android-specific workarounds.

Validated in libbpf-bootstrap's CI ([1]).

  [0] https://github.com/libbpf/libbpf-bootstrap/actions/runs/7701003207/job/20986080319#step:5:83
  [1] https://github.com/libbpf/libbpf-bootstrap/actions/runs/7715988887/job/21031767212?pr=253

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/bpf/20240201172027.604869-2-andrii@kernel.org
tools/lib/bpf/libbpf.c