On Wed, May 17, 2023 at 10:17 PM 蒋应锋 <jiangyingfeng163@xxxxxxx> wrote: > > > > > > when i test libbpf-bootstrap examples,bpf syscall failed, errno is 22, strace log as below: > What does libbpf debug log say? > > 24400 bpf(BPF_PROG_LOAD, {prog_type=BPF_PROG_TYPE_SOCKET_FILTER, insn_cnt=2, insns=0x7fffe7489940, license="GPL", log_level=0, log_size=0, log_buf=NULL, kern_version=KERNEL_VERSION(0, 0, 0), prog_flags=0, prog_name="", prog_ifindex=0, expected_attach_type=BPF_CGROUP_INET_INGRESS}, 116) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_PROG_LOAD, {prog_type=BPF_PROG_TYPE_SOCKET_FILTER, insn_cnt=2, insns=0x7fffe7489ae0, license="GPL", log_level=0, log_size=0, log_buf=NULL, kern_version=KERNEL_VERSION(0, 0, 0), prog_flags=0, prog_name="", prog_ifindex=0, expected_attach_type=BPF_CGROUP_INET_INGRESS}, 128) = 3 > 24400 bpf(BPF_BTF_LOAD, 0x7fffe74898e0, 28) = 3 > 24400 bpf(BPF_BTF_LOAD, 0x7fffe74898c0, 28) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_BTF_LOAD, 0x7fffe74898b0, 28) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_BTF_LOAD, 0x7fffe74898e0, 28) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_BTF_LOAD, 0x7fffe74898c0, 28) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_BTF_LOAD, 0x7fffe74898c0, 28) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_BTF_LOAD, 0x7fffe74898c0, 28) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_BTF_LOAD, 0x7fffe74898e0, 28) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_BTF_LOAD, 0x7fffe74898f0, 28) = 3 > 24400 bpf(BPF_PROG_LOAD, {prog_type=BPF_PROG_TYPE_SOCKET_FILTER, insn_cnt=2, insns=0x7fffe7489850, license="GPL", log_level=0, log_size=0, log_buf=NULL, kern_version=KERNEL_VERSION(0, 0, 0), prog_flags=0, prog_name="libbpf_nametest"}, 64) = 4 > 24400 bpf(BPF_MAP_CREATE, {map_type=BPF_MAP_TYPE_ARRAY, key_size=4, value_size=4, max_entries=1, map_flags=0x400 /* BPF_F_??? */, inner_map_fd=0, map_name="libbpf_mmap", map_ifindex=0}, 72) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_MAP_CREATE, {map_type=BPF_MAP_TYPE_ARRAY, key_size=4, value_size=32, max_entries=1, map_flags=0, inner_map_fd=0, map_name="libbpf_global", map_ifindex=0}, 72) = 4 > 24400 bpf(BPF_PROG_LOAD, {prog_type=BPF_PROG_TYPE_SOCKET_FILTER, insn_cnt=5, insns=0x7fffe7489820, license="GPL", log_level=0, log_size=0, log_buf=NULL, kern_version=KERNEL_VERSION(0, 0, 0), prog_flags=0, prog_name="", prog_ifindex=0, expected_attach_type=BPF_CGROUP_INET_INGRESS}, 128) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_PROG_LOAD, {prog_type=BPF_PROG_TYPE_TRACEPOINT, insn_cnt=6, insns=0x7fffe74890d0, license="GPL", log_level=0, log_size=0, log_buf=NULL, kern_version=KERNEL_VERSION(0, 0, 0), prog_flags=0, prog_name="", prog_ifindex=0, expected_attach_type=BPF_CGROUP_INET_INGRESS}, 128) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_PROG_LOAD, {prog_type=BPF_PROG_TYPE_KPROBE, insn_cnt=18, insns=0x1b7b580, license="Dual BSD/GPL", log_level=0, log_size=0, log_buf=NULL, kern_version=KERNEL_VERSION(4, 19, 0), prog_flags=0, prog_name="do_unlinkat", prog_ifindex=0, expected_attach_type=BPF_CGROUP_INET_INGRESS}, 128) = -1 EINVAL (Invalid argument) > 24400 bpf(BPF_PROG_LOAD, {prog_type=BPF_PROG_TYPE_KPROBE, insn_cnt=18, insns=0x1b7b580, license="Dual BSD/GPL", log_level=1, log_size=16777215, log_buf="", kern_version=KERNEL_VERSION(4, 19, 0), prog_flags=0, prog_name="do_unlinkat", prog_ifindex=0, expected_attach_type=BPF_CGROUP_INET_INGRESS}, 128) = -1 EINVAL (Invalid argument) > 24400 +++ exited with 22 +++ > > > kernel information is "Linux admin-PC 4.19.0-amd64-desktop #5404 SMP Fri Dec 23 17:25:30 CST 2022 x86_64 GNU/Linux" > ebpf source code: > ```c > > // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause > /* Copyright (c) 2021 Sartura */ > #define BPF_NO_GLOBAL_DATA > #define BPF_NO_PRESERVE_ACCESS_INDEX > #include "vmlinux.h" > #include <bpf/bpf_helpers.h> > #include <bpf/bpf_tracing.h> > #include <bpf/bpf_core_read.h> > > > char LICENSE[] SEC("license") = "Dual BSD/GPL"; > > > SEC("kprobe/do_unlinkat") > int BPF_KPROBE(do_unlinkat, int dfd, struct filename *name) > { > pid_t pid; > const char *filename; > > > pid = bpf_get_current_pid_tgid() >> 32; > filename = BPF_CORE_READ(name, name); > bpf_trace_printk("KPROBE ENTRY pid = %d, filename = %s\n", pid, filename); > return 0; > } > > > SEC("kretprobe/do_unlinkat") > int BPF_KRETPROBE(do_unlinkat_exit, long ret) > { > pid_t pid; > > > pid = bpf_get_current_pid_tgid() >> 32; > bpf_trace_printk("KPROBE EXIT: pid = %d, ret = %ld\n", pid, ret); > return 0; > } > > > ```