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
>

Reply via email to