Messages in this thread | | | Date | Mon, 7 May 2001 14:53:47 -0700 (PDT) | From | Nigel Gamble <> | Subject | Re: [PATCH] x86 page fault handler not interrupt safe |
| |
On Mon, 7 May 2001, Brian Gerst wrote: > Nigel Gamble wrote: > > > > On Mon, 7 May 2001, Linus Torvalds wrote: > > > On Mon, 7 May 2001, Brian Gerst wrote: > > > > This patch will still cause the user process to seg fault: The error > > > > code on the stack will not match the address in %cr2. > > > > > > You've convinced me. Good thinking. Let's do the irq thing. > > > > I've actually seen user processes seg faulting because of this with the > > fully preemptible kernel patch applied. The fix we used in that patch > > was to use an interrupt gate for the fault handler, then to simply > > restore the interrupt state: > > Keep in mind that regs->eflags could be from user space, and could have > some undesirable flags set. That's why I did a test/sti instead of
Good point.
> reloading eflags. Plus my patch leaves interrupts disabled for the > minimum time possible.
I'm not sure that it makes much difference, as interrupts are disabled for such a short time anyway. I'd prefer to put the test/sti in do_page_fault(), and reduce the complexity needed in assembler routines as much as possible, for maintainability reasons.
Nigel Gamble nigel@nrg.org Mountain View, CA, USA. http://www.nrg.org/
MontaVista Software nigel@mvista.com
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |