[LTP] [PATCH] tst_clone: Fix child detection on sparc
Anders Roxell
anders.roxell@linaro.org
Mon Sep 28 23:27:13 CEST 2026
On sparc the clone syscall does not return 0 in the child. It returns
the parent pid, so the child thinks it is the parent.
Save the pid before the clone and compare it after.
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
---
lib/tst_clone.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/lib/tst_clone.c b/lib/tst_clone.c
index 296cd40ac0a0..2fdd9e163717 100644
--- a/lib/tst_clone.c
+++ b/lib/tst_clone.c
@@ -20,6 +20,9 @@ pid_t tst_clone(const struct tst_clone_args *tst_args)
};
int flags;
pid_t pid = -1;
+#ifdef __sparc__
+ pid_t parent_pid = getpid();
+#endif
tst_flush();
@@ -31,7 +34,7 @@ pid_t tst_clone(const struct tst_clone_args *tst_args)
return -1;
if (pid != -1)
- return pid;
+ goto out;
flags = args.exit_signal | args.flags;
@@ -44,5 +47,11 @@ pid_t tst_clone(const struct tst_clone_args *tst_args)
if (pid == -1)
return -2;
+out:
+#ifdef __sparc__
+ if (getpid() != parent_pid)
+ pid = 0;
+#endif
+
return pid;
}
--
2.53.0
More information about the ltp
mailing list