On Wed, Mar 31, 2010 at 5:09 PM, John David Anglin <dave@xxxxxxxxxxxxxxxxxx> wrote: >> Any assembly constant generated with the use of >> align_frame includes size for a full stack frame. > > Does this fix fork? Which fork breakage are you talking about? The vfork/execve problem I'm seeing? The patch is simply additional comments. It fixes my constant confusion that *_SZ_ALGN constants also includes a size for a frame. I have several "Clenaup/Add documentation" patches in my tree which I will push out as I review our *.S files. There were some tricky assembly instructions that I didn't know what they did, so I added comments, that sort of stuff e.g. or,=,n I'm still at a loss to explain how the kernel prevents a process, which has just called execve, from returning to the callers memory range. My suspicion is this: * Parent calls vfork() * Child calls execve(), which uses start_thread to setup pt_regs. * Child returns from execve() via syscall_exit and does *not* restore space registers from pt_regs. * Child returns to parent's memory space and starts clobbering things. * Timer tick goes off and switch_to fixes child's space registers and PC values and child executes correctly. * Parent continues executing with some minor corruption. The window exists between the child's return and the next tick, during that time the child runs free corrupting the parent. Cheers, Carlos. -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html