[parisc-linux] 2.5 randomly kills applications with page faults
James Bottomley
James.Bottomley@steeleye.com
Fri, 20 Dec 2002 23:03:33 -0600
grundler@dsl2.external.hp.com said:
> I'm worried about sr7 getting modified without the user stack pointer
> getting saved to the proper place. It might not be a problem at all. I
> just don't know all the uses of user/kernel stacks in the interrupt
> code paths. I'm wondering if the entire code sequence I quoted needs
> to block interrupts while setting up the syscall.
I don't think that's a problem.
An interruption can occur anywhere, and thus it saves all registers. The only
problem is that on parisc there aren't separate irq stacks, so the
interruption expects to be able to use the current kernel stack (whatever it
is). As long as the kernel stack is always correctly set up when %sr7 points
to kernel space, we should be fine. If we take an interruption before zeroing
sr7, we go through the procedure to obtain a kernel stack for an executing
user process (however, in this case, the interruption will stash the registers
in the task structure, so we can't modify the task structure until we've
changed sr7 to kernel space). Also note, we can't use the kernel stack until
sr7 is in kernel space.
James