Unsafe pte_update() in do_page_fault() (4xx and Book-E)

Benjamin Herrenschmidt benh at kernel.crashing.org
Fri Mar 3 14:43:02 EST 2006


> 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 ...

Ben.





More information about the Linuxppc-dev mailing list