diff --git a/[refs] b/[refs] index 857b89a02340..f8c3a58e0c2d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9b4f98cdac9683ee9cdb28c582a81223f0c10a3f +refs/heads/master: af34770e55fd899c96d8d73bdc04dbc956096650 diff --git a/trunk/mm/ksm.c b/trunk/mm/ksm.c index 51573858938d..e1f1f278075f 100644 --- a/trunk/mm/ksm.c +++ b/trunk/mm/ksm.c @@ -1590,13 +1590,7 @@ struct page *ksm_does_need_to_copy(struct page *page, SetPageDirty(new_page); __SetPageUptodate(new_page); - SetPageSwapBacked(new_page); __set_page_locked(new_page); - - if (!mlocked_vma_newpage(vma, new_page)) - lru_cache_add_lru(new_page, LRU_ACTIVE_ANON); - else - add_page_to_unevictable_list(new_page); } return new_page; diff --git a/trunk/mm/memory.c b/trunk/mm/memory.c index bb1369f7b9b4..0abd07097ec6 100644 --- a/trunk/mm/memory.c +++ b/trunk/mm/memory.c @@ -3044,7 +3044,10 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, } flush_icache_page(vma, page); set_pte_at(mm, address, page_table, pte); - do_page_add_anon_rmap(page, vma, address, exclusive); + if (swapcache) /* ksm created a completely new copy */ + page_add_new_anon_rmap(page, vma, address); + else + do_page_add_anon_rmap(page, vma, address, exclusive); /* It's better to call commit-charge after rmap is established */ mem_cgroup_commit_charge_swapin(page, ptr);