[LTP] [PATCH v2] tst_clone: Fix child detection on sparc

Anders Roxell anders.roxell@linaro.org
Tue Sep 29 10:42:53 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 | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/tst_clone.c b/lib/tst_clone.c
index 296cd40ac0a0..d7f005a2d2a5 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 = tst_getpid();
+#endif
 
 	tst_flush();
 
@@ -44,5 +47,10 @@ pid_t tst_clone(const struct tst_clone_args *tst_args)
 	if (pid == -1)
 		return -2;
 
+#ifdef __sparc__
+	if (pid == parent_pid)
+		pid = 0;
+#endif
+
 	return pid;
 }
-- 
2.53.0



More information about the ltp mailing list