Re: [PATCH v2 2/3] perf test: fix sys_enter_openat event test for musl
From: Ian Rogers
Date: Wed Apr 29 2026 - 12:55:53 EST
On Tue, Apr 28, 2026 at 7:39 AM Martin Kaiser <martin@xxxxxxxxx> wrote:
>
> The "syscalls:sys_enter_openat event fields" test calls
>
> openat(AT_FDCWD, "/etc/passwd", O_RDONLY | O_DIRECTORY)
>
> and verifies that the flags of the captured event are matching.
> This fails for musl, where the openat syscall wrapper always adds
> O_LARGEFILE.
>
> Update the check to allow for additional flags, the access mode flags
> must be unchanged.
>
> Signed-off-by: Martin Kaiser <martin@xxxxxxxxx>
> ---
> v2:
> - check that access mode is unchanged
>
> tools/perf/tests/openat-syscall-tp-fields.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/tests/openat-syscall-tp-fields.c b/tools/perf/tests/openat-syscall-tp-fields.c
> index 2a139d2781a8..5523cf4e9321 100644
> --- a/tools/perf/tests/openat-syscall-tp-fields.c
> +++ b/tools/perf/tests/openat-syscall-tp-fields.c
> @@ -120,7 +120,10 @@ static int test__syscall_openat_tp_fields(struct test_suite *test __maybe_unused
>
> tp_flags = evsel__intval(evsel, &sample, "flags");
> perf_sample__exit(&sample);
> - if (flags != tp_flags) {
> + /* C library wrapper may set additional flags,
> + access mode must be unchanged */
I think normal style would be:
```
/*
* C library ...
*/
```
> + if ((tp_flags & O_ACCMODE) != (flags & O_ACCMODE) ||
> + (tp_flags & flags) != flags) {
How can this second condition be true given the first condition?
Thanks,
Ian
> pr_debug("%s: Expected flags=%#x, got %#x\n",
> __func__, flags, tp_flags);
> goto out_delete_evlist;
> --
> 2.43.7
>