lkml.org 
[lkml]   [2009]   [Sep]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 6/8] mm: fix anonymous dirtying
    do_anonymous_page() has been wrong to dirty the pte regardless.
    If it's not going to mark the pte writable, then it won't help
    to mark it dirty here, and clogs up memory with pages which will
    need swap instead of being thrown away. Especially wrong if no
    overcommit is chosen, and this vma is not yet VM_ACCOUNTed -
    we could exceed the limit and OOM despite no overcommit.

    Signed-off-by: Hugh Dickins <hugh.dickins@tiscali.co.uk>
    Cc: stable@kernel.org
    ---

    mm/memory.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- mm5/mm/memory.c 2009-09-07 13:16:46.000000000 +0100
    +++ mm6/mm/memory.c 2009-09-07 13:16:53.000000000 +0100
    @@ -2608,7 +2608,8 @@ static int do_anonymous_page(struct mm_s
    goto oom_free_page;

    entry = mk_pte(page, vma->vm_page_prot);
    - entry = maybe_mkwrite(pte_mkdirty(entry), vma);
    + if (vma->vm_flags & VM_WRITE)
    + entry = pte_mkwrite(pte_mkdirty(entry));

    page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
    if (!pte_none(*page_table))

    \
     
     \ /
      Last update: 2009-09-07 23:41    [W:0.020 / U:20.348 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site