On Sun, Jan 30, 2022 at 10:22 PM Rick Edgecombe <rick.p.edgecombe@xxxxxxxxx> wrote: > > From: Yu-cheng Yu <yu-cheng.yu@xxxxxxxxx> > > The single call site of copy_thread() passes stack size in 'arg'. To make > this clear and in preparation of using this argument for shadow stack > allocation, change 'arg' to 'stack_size'. No functional changes. Actually that name is misleading - the single caller copy_process() indeed does: retval = copy_thread(clone_flags, args->stack, args->stack_size, p, args->tls); but the member "stack_size" of "struct kernel_clone_args" can actually also be a pointer argument given to a kthread, see create_io_thread() and kernel_thread(): pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) { struct kernel_clone_args args = { .flags = ((lower_32_bits(flags) | CLONE_VM | CLONE_UNTRACED) & ~CSIGNAL), .exit_signal = (lower_32_bits(flags) & CSIGNAL), .stack = (unsigned long)fn, .stack_size = (unsigned long)arg, }; return kernel_clone(&args); } And then in copy_thread(), we have: kthread_frame_init(frame, sp, arg) So I'm not sure whether this name change really makes sense, or whether it just adds to the confusion.