On Mon, May 18, 2026 at 4:00 AM Jiri Olsa <[email protected]> wrote: > > In the previous optimized uprobe fix we changed the syscall > error used for its detection from ENXIO to EPROTO. > > Changing related probe_uprobe_syscall detection check. > > Suggested-by: Andrii Nakryiko <[email protected]> > Fixes: 05738da0efa1 ("libbpf: Add uprobe syscall feature detection") > Signed-off-by: Jiri Olsa <[email protected]> > --- > tools/lib/bpf/features.c | 4 ++-- > tools/testing/selftests/bpf/prog_tests/uprobe_syscall.c | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) >
sashiko is wrong, this change is correct (we do not want to attempt sys_uprobe optimization if -ENXIO is returned from broken kernels) Acked-by: Andrii Nakryiko <[email protected]> > diff --git a/tools/lib/bpf/features.c b/tools/lib/bpf/features.c > index b7e388f99d0b..e5641fa60163 100644 > --- a/tools/lib/bpf/features.c > +++ b/tools/lib/bpf/features.c > @@ -577,10 +577,10 @@ static int probe_ldimm64_full_range_off(int token_fd) > static int probe_uprobe_syscall(int token_fd) > { > /* > - * If kernel supports uprobe() syscall, it will return -ENXIO when > called > + * If kernel supports uprobe() syscall, it will return -EPROTO when > called > * from the outside of a kernel-generated uprobe trampoline. > */ > - return syscall(__NR_uprobe) < 0 && errno == ENXIO; > + return syscall(__NR_uprobe) < 0 && errno == EPROTO; > } > #else > static int probe_uprobe_syscall(int token_fd) > diff --git a/tools/testing/selftests/bpf/prog_tests/uprobe_syscall.c > b/tools/testing/selftests/bpf/prog_tests/uprobe_syscall.c > index 955a37751b52..c944136252c6 100644 > --- a/tools/testing/selftests/bpf/prog_tests/uprobe_syscall.c > +++ b/tools/testing/selftests/bpf/prog_tests/uprobe_syscall.c > @@ -762,7 +762,7 @@ static void test_uprobe_error(void) > long err = syscall(__NR_uprobe); > > ASSERT_EQ(err, -1, "error"); > - ASSERT_EQ(errno, ENXIO, "errno"); > + ASSERT_EQ(errno, EPROTO, "errno"); > } > > static void __test_uprobe_syscall(void) > -- > 2.53.0 >
