On Sun, Apr 21, 2024 at 12:43 PM Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > > Adding test to verify that when called from outside of the > trampoline provided by kernel, the uretprobe syscall will cause > calling process to receive SIGILL signal and the attached bpf > program is no executed. > > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > --- > .../selftests/bpf/prog_tests/uprobe_syscall.c | 92 +++++++++++++++++++ > .../selftests/bpf/progs/uprobe_syscall_call.c | 15 +++ > 2 files changed, 107 insertions(+) > create mode 100644 tools/testing/selftests/bpf/progs/uprobe_syscall_call.c > See nits below, but overall LGTM Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> [...] > @@ -219,6 +301,11 @@ static void test_uretprobe_regs_change(void) > { > test__skip(); > } > + > +static void test_uretprobe_syscall_call(void) > +{ > + test__skip(); > +} > #endif > > void test_uprobe_syscall(void) > @@ -228,3 +315,8 @@ void test_uprobe_syscall(void) > if (test__start_subtest("uretprobe_regs_change")) > test_uretprobe_regs_change(); > } > + > +void serial_test_uprobe_syscall_call(void) does it need to be serial? non-serial are still run sequentially within a process (there is no multi-threading), it's more about some global effects on system. > +{ > + test_uretprobe_syscall_call(); > +} > diff --git a/tools/testing/selftests/bpf/progs/uprobe_syscall_call.c b/tools/testing/selftests/bpf/progs/uprobe_syscall_call.c > new file mode 100644 > index 000000000000..5ea03bb47198 > --- /dev/null > +++ b/tools/testing/selftests/bpf/progs/uprobe_syscall_call.c > @@ -0,0 +1,15 @@ > +// SPDX-License-Identifier: GPL-2.0 > +#include "vmlinux.h" > +#include <bpf/bpf_helpers.h> > +#include <string.h> > + > +struct pt_regs regs; > + > +char _license[] SEC("license") = "GPL"; > + > +SEC("uretprobe//proc/self/exe:uretprobe_syscall_call") > +int uretprobe(struct pt_regs *regs) > +{ > + bpf_printk("uretprobe called"); debugging leftover? we probably don't want to pollute trace_pipe from test > + return 0; > +} > -- > 2.44.0 >