|
@@ -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);
|
|
|
|