lkml.org 
[lkml]   [2008]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [rfc][patch] mm: dirty page accounting race fix
    On Thu, 14 Aug 2008, Peter Zijlstra wrote:
    > On Thu, 2008-08-14 at 12:55 +0100, Hugh Dickins wrote:
    >
    > > But I got a bit distracted: mprotect's change_pte_range is
    > > traditionally where the pte_modify operation has been split up into
    > > stages on some arches, that really can be restricting permissions
    > > and needs to tread carefully. Now I go to look there, I see its
    > > /*
    > > * Avoid taking write faults for pages we know to be
    > > * dirty.
    > > */
    > > if (dirty_accountable && pte_dirty(ptent))
    > > ptent = pte_mkwrite(ptent);
    > >
    > > and get rather worried: isn't that likely to be giving write permission
    > > to a pte in a vma we are precisely taking write permission away from?
    >
    > Exactly, we do that because the page is already dirty, therefore we do
    > not need to trap on write to mark it dirty - at least, that was the idea
    > behind this optimization.

    I realized that was the intended optimization, what I'd missed is that
    dirty_accountable can only be true there if (vma->vm_flags & VM_WRITE):
    that's checked in vma_wants_writenotify(), which is how dirty_accountable
    gets to be set.

    So those lines are okay, panic over, phew.

    Hugh


    \
     
     \ /
      Last update: 2008-08-14 14:49    [W:3.817 / U:3.564 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site