Re: [PATCH 0/4] tools/nolibc: pass mode to open syscall if O_TMPFILE is set

From: Willy Tarreau

Date: Fri May 01 2026 - 04:08:58 EST


Hi Thomas,

On Wed, Apr 29, 2026 at 04:45:08PM +0200, Thomas Weißschuh wrote:
> When O_TMPFILE is set, the open mode needs to be passed to the kernel as
> per the documentation.
>
> Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
> ---
> Thomas Weißschuh (4):
> tools/nolibc: split implicit open flags into a macro
> tools/nolibc: split open mode handling into a macro
> tools/nolibc: pass mode to open syscall if O_TMPFILE is set
> selftests/nolibc: test open mode handling
>
> tools/include/nolibc/fcntl.h | 46 ++++++++++++----------------
> tools/testing/selftests/nolibc/nolibc-test.c | 23 ++++++++++++++
> 2 files changed, 43 insertions(+), 26 deletions(-)

This is a clever approach, and it can definitely work.

Acked-by: Willy Tarreau <w@xxxxxx>

I'm wondering why we're looking at the mode only for certain flags
though. After all, the kernel is supposed to look at it when it needs.
Why wouldn't we just always pass the va_args and let the syscall refer
to it when it needs ? If it's a register, it's implicitly passed anyway,
and if it's in the stack, it's only one entry, it's the same as if someone
calls open() with one of these flags without passing the argument. Any
garbage it contains should be ignored by the kernel when not needed, so
I don't see why it would be a problem.

Cheers,
Willy