All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH] tst_clone: Fix child detection on sparc
@ 2026-09-28 21:27 Anders Roxell
  2026-09-28 23:51 ` [LTP] " linuxtestproject.agent
  0 siblings, 1 reply; 3+ messages in thread
From: Anders Roxell @ 2026-09-28 21:27 UTC (permalink / raw)
  To: ltp

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


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [LTP] tst_clone: Fix child detection on sparc
  2026-09-28 21:27 [LTP] [PATCH] tst_clone: Fix child detection on sparc Anders Roxell
@ 2026-09-28 23:51 ` linuxtestproject.agent
  0 siblings, 0 replies; 3+ messages in thread
From: linuxtestproject.agent @ 2026-09-28 23:51 UTC (permalink / raw)
  To: Anders Roxell; +Cc: ltp

Hi Anders,

On Mon Sep 28 23:27:13 2026 +0200, Anders Roxell <anders.roxell@linaro.org> wrote:
> tst_clone: Fix child detection on sparc

> +#ifdef __sparc__
> +	pid_t parent_pid = getpid();
> +#endif

Use tst_getpid() instead of getpid(). glibc versions prior to 2.25 cache
getpid(), which returns a stale PID if tst_clone() is called from a child
process created by a direct clone syscall.

> +out:
> +#ifdef __sparc__
> +	if (getpid() != parent_pid)
> +		pid = 0;
> +#endif

Calling getpid() in the child returns the cached parent PID on glibc < 2.25
because the raw clone syscall bypasses glibc, causing child detection to fail.
Use if (pid == parent_pid) pid = 0; instead, or use tst_getpid().

Verdict - Needs revision

---
Note:

The agent can sometimes produce false positives although often its
findings are genuine. If you find issues with the review, please
comment this email or ignore the suggestions.

Regards,
LTP AI Reviewer

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [LTP] tst_clone: Fix child detection on sparc
  2026-09-29  8:42 [LTP] [PATCH v2] " Anders Roxell
@ 2026-09-29 11:16 ` linuxtestproject.agent
  0 siblings, 0 replies; 3+ messages in thread
From: linuxtestproject.agent @ 2026-09-29 11:16 UTC (permalink / raw)
  To: Anders Roxell; +Cc: ltp

Hi Anders,

On Tue Sep 29 10:42:53 2026 +0200, Anders Roxell wrote:
> tst_clone: Fix child detection on sparc

> @@ -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

On SPARC, clone3 already returns 0 in the child, making this call redundant
when clone3 succeeds; move it into the clone fallback path right before
syscall(__NR_clone, ...). Additionally, the SPARC kernel returns the
caller's TID (current->pid) in %o0 to the child, so use tst_gettid()
instead of tst_getpid() to support multithreaded callers.

Verdict - Needs revision

---
Note:

The agent can sometimes produce false positives although often its
findings are genuine. If you find issues with the review, please
comment this email or ignore the suggestions.

Regards,
LTP AI Reviewer

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-09-29 11:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-28 21:27 [LTP] [PATCH] tst_clone: Fix child detection on sparc Anders Roxell
2026-09-28 23:51 ` [LTP] " linuxtestproject.agent
  -- strict thread matches above, loose matches on Subject: below --
2026-09-29  8:42 [LTP] [PATCH v2] " Anders Roxell
2026-09-29 11:16 ` [LTP] " linuxtestproject.agent

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.