Re: parisc: Use of align_frame provides stack frame.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux