On 7/26/26 15:03, Helge Deller wrote:
On 7/26/26 02:55, Matt Turner wrote:
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.

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]>
---
  linux-user/strace.c    | 2 +-
  linux-user/strace.list | 2 +-
  linux-user/syscall.c   | 4 ++--
  3 files changed, 4 insertions(+), 4 deletions(-)

diff --git ./linux-user/strace.c ./linux-user/strace.c
index 3a81cc95f4..d861f311f6 100644
--- ./linux-user/strace.c
+++ ./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)
+#ifdef TARGET_NR_fsconfig

Your patch is basically correct.
But I think instead of removing the (wrong) NR_fsconfig, we should
instead depend on the (possibly existing) __NR_fsconfig.

Reason is, that if __NR_fsconfig doesn't exist on the host machine, the
constants used in print_fsconfig() like FSCONFIG_SET_FLAG aren't known either,
leading to build errors if we don't check against __NR_fsconfig.

I change the patch accordingly.

and pushed to my linux-user git tree:
https://github.com/hdeller/qemu-hppa/commit/4fdc24696cbf1ac6d97075d877cafc9fead4c475

Helge

Reply via email to