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