On Tue, Aug 18, 2020 at 06:44:47PM +0100, Matthew Wilcox wrote: > On Tue, Aug 18, 2020 at 07:34:00PM +0200, Christian Brauner wrote: > > The only remaining function callable outside of kernel/fork.c is > > _do_fork(). It doesn't really follow the naming of kernel-internal > > syscall helpers as Christoph righly pointed out. Switch all callers and > > references to kernel_clone() and remove _do_fork() once and for all. > > My only concern is around return type. long, int, pid_t ... can we > choose one and stick to it? pid_t is probably the right return type > within the kernel, despite the return type of clone3(). It'll save us > some work if we ever go through the hassle of growing pid_t beyond 31-bit. It should be safe to switch kernel_clone() to return pid_t. (Afair, the syscall wrappers all have "long" as return type. (I think Linus provided some more details on that in another mail. Also see include/linux/syscalls.h. So the return type for clone3() is really somewhat a userspace thing, I think.) I wonder whether I should take the opportunity and switch the advertised flag arguments for the legacy clone() syscalls and kernel_thread() from unsigned long to unsigned int so we can get rid of the lower .flags = (lower_32_bits(clone_flags) & ~CSIGNAL), calls I added to fix sign extension issues glibc ran into... Christian