diff --git a/mm/ksm.c b/mm/ksm.c index 80c29b1b2b8a..ca6d2a06a615 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1013,6 +1013,12 @@ static int try_to_merge_one_page(struct vm_area_struct *vma, */ set_page_stable_node(page, NULL); mark_page_accessed(page); + /* + * Page reclaim just frees a clean page with no dirty + * ptes: make sure that the ksm page would be swapped. + */ + if (!PageDirty(page)) + SetPageDirty(page); err = 0; } else if (pages_identical(page, kpage)) err = replace_page(vma, page, kpage, orig_pte);