Re: [PATCH] ppc64: Fix possible race with set_pte on a present PTE

Benjamin Herrenschmidt
2004-05-27T22:00:54Z

On Fri, 2004-05-28 at 07:56, David Mosberger wrote:
> >>>>> On Tue, 25 May 2004 06:53:22 +0200, Andrea Arcangeli <andrea@suse.de> said:
>
> >> If the "accessed" or "dirty" bits are zero, accessing/writing the
> >> page will cause a fault which will be handled in a low-level
> >> fault handler. The Linux version of these handlers simply turn
> >> on the respective bit. See daccess_bit(), iaccess_bit(), and dirty_bit()
> >> in arch/ia64/kernel/ivt.S.
>
> Andrea> so you mean, this is being set in the arch section before
> Andrea> ever reaching handle_mm_fault?
>
> Correct. The low-level fault handlers set the ACCESSED/DIRTY bits
> with an atomic compare-and-exchange (on SMP). They don't (normally)
> bubble up all the way to the Linux page-fault handler.

Same for PPC, but we still have a race where we can reach that code, see
my initial mail (typically, because your low level code, for obvious
reasons, doesn't take the mm semaphore, thus the page may have been
mapped right after you decide to go to do_page_fault and before it takes
the mm sem).

Ben.