All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH] clone10.c: avoid using the libc thread memory model in touch_tls_in_child()
@ 2026-02-26 10:35 Changwei Zou via ltp
  2026-02-26 11:11 ` Li Wang via ltp
  2026-03-04  5:59 ` Li Wang via ltp
  0 siblings, 2 replies; 4+ messages in thread
From: Changwei Zou via ltp @ 2026-02-26 10:35 UTC (permalink / raw)
  To: ltp; +Cc: changwei.zou

The thread touch_tls_in_child(), which is created using clone(),
is not fully initialized as a standard libc-managed thread.
Consequently, it is not in a proper state to invoke many libc functions safely.

Signed-off-by: Changwei Zou <changwei.zou@canonical.com>
---
 testcases/kernel/syscalls/clone/clone10.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/testcases/kernel/syscalls/clone/clone10.c b/testcases/kernel/syscalls/clone/clone10.c
index 9ffb49c37..96de811ad 100644
--- a/testcases/kernel/syscalls/clone/clone10.c
+++ b/testcases/kernel/syscalls/clone/clone10.c
@@ -20,6 +20,7 @@
 #include "tst_test.h"
 #include "clone_platform.h"
 #include "lapi/syscalls.h"
+#include "tst_atomic.h"
 #include "lapi/tls.h"
 
 #define TLS_EXP 100
@@ -34,21 +35,15 @@ struct user_desc *tls_desc;
 static __thread int tls_var;
 
 static char *child_stack;
-static volatile int child_done;
+static tst_atomic_t child_done;
 
 static int flags = CLONE_THREAD |  CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SETTLS;
 
 static int touch_tls_in_child(void *arg LTP_ATTRIBUTE_UNUSED)
 {
-#if defined(__x86_64__)
-	if (syscall(SYS_arch_prctl, ARCH_SET_FS, tls_ptr) == -1)
-		exit(EXIT_FAILURE);
-#endif
 	tls_var = TLS_EXP + 1;
-	tst_res(TINFO, "Child (PID: %d, TID: %d): TLS value set to: %d", getpid(), (pid_t)syscall(SYS_gettid), tls_var);
+	tst_atomic_store(1, &child_done);
 
-	TST_CHECKPOINT_WAKE(0);
-	free_tls();
 	tst_syscall(__NR_exit, 0);
 	return 0;
 }
@@ -56,13 +51,16 @@ static int touch_tls_in_child(void *arg LTP_ATTRIBUTE_UNUSED)
 static void verify_tls(void)
 {
 	tls_var = TLS_EXP;
+	tst_atomic_store(0, &child_done);
 
 	TEST(ltp_clone7(flags, touch_tls_in_child, NULL, CHILD_STACK_SIZE, child_stack, NULL, tls_ptr, NULL));
 
 	if (TST_RET == -1)
 		tst_brk(TBROK | TTERRNO, "clone() failed");
 
-	TST_CHECKPOINT_WAIT(0);
+	while (tst_atomic_load(&child_done) == 0) {
+		usleep(10);
+	}
 
 	if (tls_var == TLS_EXP) {
 		tst_res(TPASS,
@@ -84,6 +82,7 @@ static void setup(void)
 static void cleanup(void)
 {
 	free(child_stack);
+	free_tls();
 }
 
 static struct tst_test test = {
-- 
2.43.0


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

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

* Re: [LTP] [PATCH] clone10.c: avoid using the libc thread memory model in touch_tls_in_child()
  2026-02-26 10:35 [LTP] [PATCH] clone10.c: avoid using the libc thread memory model in touch_tls_in_child() Changwei Zou via ltp
@ 2026-02-26 11:11 ` Li Wang via ltp
  2026-03-04  5:59 ` Li Wang via ltp
  1 sibling, 0 replies; 4+ messages in thread
From: Li Wang via ltp @ 2026-02-26 11:11 UTC (permalink / raw)
  To: Changwei Zou; +Cc: ltp

Reviewed-by: Li Wang <liwang@redhat.com>

-- 
Regards,
Li Wang


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

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

* Re: [LTP] [PATCH] clone10.c: avoid using the libc thread memory model in touch_tls_in_child()
  2026-02-26 10:35 [LTP] [PATCH] clone10.c: avoid using the libc thread memory model in touch_tls_in_child() Changwei Zou via ltp
  2026-02-26 11:11 ` Li Wang via ltp
@ 2026-03-04  5:59 ` Li Wang via ltp
  2026-03-04  6:13   ` Changwei Zou via ltp
  1 sibling, 1 reply; 4+ messages in thread
From: Li Wang via ltp @ 2026-03-04  5:59 UTC (permalink / raw)
  To: Changwei Zou; +Cc: ltp

Patch merged, thanks!

-- 
Regards,
Li Wang

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

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

* Re: [LTP] [PATCH] clone10.c: avoid using the libc thread memory model in touch_tls_in_child()
  2026-03-04  5:59 ` Li Wang via ltp
@ 2026-03-04  6:13   ` Changwei Zou via ltp
  0 siblings, 0 replies; 4+ messages in thread
From: Changwei Zou via ltp @ 2026-03-04  6:13 UTC (permalink / raw)
  To: Li Wang; +Cc: ltp

Hi Team,
Thank you very much for your help.
Kind regards,
Changwei


On 3/4/26 16:59, Li Wang wrote:
>
> Patch merged, thanks!
>
> -- 
> Regards,
> Li Wang

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

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

end of thread, other threads:[~2026-03-04  6:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-26 10:35 [LTP] [PATCH] clone10.c: avoid using the libc thread memory model in touch_tls_in_child() Changwei Zou via ltp
2026-02-26 11:11 ` Li Wang via ltp
2026-03-04  5:59 ` Li Wang via ltp
2026-03-04  6:13   ` Changwei Zou via ltp

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.