On Wed, Jun 23, 2021 at 08:04:11AM +1200, Michael Schmitz wrote: > All syscalls that _do_ save the switch stack are currently called through > wrappers which pull the syscall arguments out of the saved pt_regs on the > stack (pushing the switch stack after the SAVE_ALL saved stuff buries the > syscall arguments on the stack, see comment about m68k_clone(). We'd have to > push the switch stack _first_ when entering system_call to leave the syscall > arguments in place, but that will require further changes to the syscall > exit path (currently shared with the interrupt exit path). Not to mention > the register offset calculations in arch/m68k/kernel/ptrace.c, and perhaps a > few other dependencies that don't come to mind immediately. > > We have both pt_regs and switch_stack in uapi/asm/ptrace.h, but the ordering > of the two is only mentioned in a comment. Can we reorder them on the stack, > as long as we don't change the struct definitions proper? > > This will take a little more time to work out and test - certainly not > before the weekend. I'll send a corrected version of my debug patch before > that. This is insane, *especially* on m68k where you have the mess with different frame layouts and associated ->stkadj crap (see mangle_kernel_stack() for the (very) full barfbag).