Unsafe pte_update() in do_page_fault() (4xx and Book-E)
Eugene Surovegin
ebs at ebshome.net
Fri Mar 3 14:55:12 EST 2006
On Fri, Mar 03, 2006 at 02:43:02PM +1100, Benjamin Herrenschmidt wrote:
>
> > If this happens, pte_update() sets _PAGE_HWEXEC bit in just cleared
> > PTE. Sometime later, another page fault happens for this page, but
> > because of that set bit, pte_none() test in handle_pte_fault() fails,
> > and we continue along the wrong path, thinking that this PTE was
> > swapped out to the swap file, and this triggers swap_dup error I
> > mentioned at the beginning.
>
> Can we preempt at that point ? As tehre is no SMP 4xx that I know of
> preempt would be the only cause for such a race ...
Yes, as I mentioned in the original post, I'm running preempt enabled
kernel.
--
Eugene
More information about the Linuxppc-dev
mailing list