On Sun, Jul 26, 2026 at 3:36 PM Helge Deller <[email protected]> wrote: > > From: Matt Turner <[email protected]> > > The fsopen(), fsconfig(), fsmount() and fspick() implementations are > guarded by defined(NR_fsopen) rather than defined(__NR_fsopen). No such > macro exists, so the guard is never true and the entire series compiles > out. Guests calling any of the four get -ENOSYS, which for example makes > systemd's credential setup fail with EXIT_CREDENTIALS for most units. > > The strace bits for fsconfig() have the same typo.
Please take a look at the following CI failure: ../linux-user/strace.c: In function ‘print_fsconfig_cmd_name’: ../linux-user/strace.c:4352:10: error: ‘FSCONFIG_SET_FLAG’ undeclared (first use in this function) 4352 | case FSCONFIG_SET_FLAG: | ^~~~~~~~~~~~~~~~~ https://gitlab.com/qemu-project/qemu/-/jobs/15553379213#L2358 Once this has been fixed, please send a v2 pull request. Thanks! Stefan > > Fixes: 767c32fe6983 ("linux-user: implement fsmount(2) series of syscalls") > Fixes: 6e0aa9f6c731 ("linux-user/strace: add fsmount series of syscalls") > Signed-off-by: Matt Turner <[email protected]> > Reviewed-by: Helge Deller <[email protected]> > Signed-off-by: Helge Deller <[email protected]> > --- > linux-user/strace.c | 2 +- > linux-user/strace.list | 2 +- > linux-user/syscall.c | 4 ++-- > 3 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/linux-user/strace.c b/linux-user/strace.c > index 3a81cc95f4..af1cf9548a 100644 > --- a/linux-user/strace.c > +++ b/linux-user/strace.c > @@ -4344,7 +4344,7 @@ print_statx(CPUArchState *cpu_env, const struct > syscallname *name, > } > #endif > > -#if defined(TARGET_NR_fsconfig) && defined(NR_fsconfig) > +#if defined(TARGET_NR_fsconfig) && defined(__NR_fsconfig) > static void > print_fsconfig_cmd_name(int cmd) > { > diff --git a/linux-user/strace.list b/linux-user/strace.list > index e363892e0a..ba1c1dc0ae 100644 > --- a/linux-user/strace.list > +++ b/linux-user/strace.list > @@ -1725,7 +1725,7 @@ > #ifdef TARGET_NR_fsopen > { TARGET_NR_fsopen, "fsopen", "%s(%s,%d)", NULL, NULL }, > #endif > -#if defined(TARGET_NR_fsconfig) && defined(NR_fsconfig) > +#if defined(TARGET_NR_fsconfig) && defined(__NR_fsconfig) > { TARGET_NR_fsconfig, "fsconfig", NULL, print_fsconfig, NULL }, > #endif > #ifdef TARGET_NR_fsmount > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 3da5530d42..740142825d 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -9740,7 +9740,7 @@ _syscall5(int, sys_move_mount, int, __from_dfd, const > char *, __from_pathname, > int, __to_dfd, const char *, __to_pathname, unsigned int, flag) > #endif > > -#if defined(TARGET_NR_fsopen) && defined(NR_fsopen) > +#if defined(TARGET_NR_fsopen) && defined(__NR_fsopen) > #define __NR_sys_fsopen __NR_fsopen > _syscall2(int, sys_fsopen, const char *, fs_name, unsigned int, flags); > #define __NR_sys_fsconfig __NR_fsconfig > @@ -14485,7 +14485,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, > int num, abi_long arg1, > return do_map_shadow_stack(cpu_env, arg1, arg2, arg3); > #endif > > -#if defined(TARGET_NR_fsopen) && defined(NR_fsopen) > +#if defined(TARGET_NR_fsopen) && defined(__NR_fsopen) > case TARGET_NR_fsopen: > { > p = lock_user_string(arg1); > -- > 2.54.0 >
