[LTP] [PATCH v2] tst_clone: Fix child detection on sparc
Petr Vorel
pvorel@suse.cz
Tue Sep 29 16:21:56 CEST 2026
Hi Anders,
> 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.
So, somebody still test sparc :). Before applying a workaround few questions.
I suppose this is because we did not updated our syscalls numbers.
I send a patch which regenerated syscall numbers to have clone3 on sparc (both
32 and 64 bit) v7.0:
$ include/lapi/syscalls/generate_arch.sh ../linux
Can you please verify it works with clone3()? It was added this year in v7.0 in
2153b2e8917b7 ("sparc: Add architecture support for clone3")
Do we care about the past?
Kind regards,
Petr
> 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;
> }
More information about the ltp
mailing list