On Tue, 2022-02-08 at 09:38 +0100, Thomas Gleixner wrote: > On Sun, Jan 30 2022 at 13:18, Rick Edgecombe wrote: > > -int copy_thread(unsigned long clone_flags, unsigned long sp, > > unsigned long arg, > > - struct task_struct *p, unsigned long tls) > > +int copy_thread(unsigned long clone_flags, unsigned long sp, > > + unsigned long stack_size, struct task_struct *p, > > + unsigned long tls) > > { > > struct inactive_task_frame *frame; > > struct fork_frame *fork_frame; > > @@ -175,7 +176,7 @@ int copy_thread(unsigned long clone_flags, > > unsigned long sp, unsigned long arg, > > if (unlikely(p->flags & PF_KTHREAD)) { > > p->thread.pkru = pkru_get_init_value(); > > memset(childregs, 0, sizeof(struct pt_regs)); > > - kthread_frame_init(frame, sp, arg); > > + kthread_frame_init(frame, sp, stack_size); > > return 0; > > } > > > > @@ -208,7 +209,7 @@ int copy_thread(unsigned long clone_flags, > > unsigned long sp, unsigned long arg, > > */ > > childregs->sp = 0; > > childregs->ip = 0; > > - kthread_frame_init(frame, sp, arg); > > + kthread_frame_init(frame, sp, stack_size); > > return 0; > > } > > Can you please change the prototypes too for completeness sake? In the header it's: extern int copy_thread(unsigned long, unsigned long, unsigned long, struct task_struct *, unsigned long); And the various arch implementations call the stack size: arg, kthread_arg, stk_sz, etc. Adding names to the prototype would conflict with the some arch's names unless they were all unified. Is it a worthwhile refactor?