diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c b/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c index a036b92..40a1eaf 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c @@ -21,9 +21,12 @@ #include #include #define ARCH_FORK() \ - INLINE_SYSCALL (clone, 4, \ - CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, 0, \ - NULL, &THREAD_SELF->tid) + ({ unsigned long ret = INLINE_SYSCALL (fork, 0); \ + if (!ret) { \ + pid_t pid = INLINE_SYSCALL (getpid, 0); \ + THREAD_SETMEM (THREAD_SELF, pid, pid); \ + THREAD_SETMEM (THREAD_SELF, tid, pid); \ + } ret; }) #include "../fork.c"