From: Hugh Dickins zap_pte_range already avoids wasting time to mark_page_accessed on anon pages: it can also skip anon set_page_dirty - the page only needs to be marked dirty if shared with another mm, but that will say pte_dirty too. Signed-off-by: Hugh Dickins Signed-off-by: Andrew Morton --- mm/memory.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff -puN mm/memory.c~mm-zap_pte_range-dont-dirty-anon mm/memory.c --- devel/mm/memory.c~mm-zap_pte_range-dont-dirty-anon 2005-09-25 15:30:58.000000000 -0700 +++ devel-akpm/mm/memory.c 2005-09-25 15:30:58.000000000 -0700 @@ -574,12 +574,14 @@ static void zap_pte_range(struct mmu_gat addr) != page->index) set_pte_at(tlb->mm, addr, pte, pgoff_to_pte(page->index)); - if (pte_dirty(ptent)) - set_page_dirty(page); if (PageAnon(page)) dec_mm_counter(tlb->mm, anon_rss); - else if (pte_young(ptent)) - mark_page_accessed(page); + else { + if (pte_dirty(ptent)) + set_page_dirty(page); + if (pte_young(ptent)) + mark_page_accessed(page); + } tlb->freed++; page_remove_rmap(page); tlb_remove_page(tlb, page); _