On Tue, Nov 07, 2023 at 09:52:11PM +0800, Kefeng Wang wrote: > struct page *ksm_might_need_to_copy(struct page *page, > - struct vm_area_struct *vma, unsigned long address) > + struct vm_area_struct *vma, unsigned long addr) > { > struct folio *folio = page_folio(page); > struct anon_vma *anon_vma = folio_anon_vma(folio); > - struct page *new_page; > + struct folio *new_folio; > > - if (PageKsm(page)) { > - if (page_stable_node(page) && > + if (folio_test_ksm(folio)) { > + if (folio_stable_node(folio) && > !(ksm_run & KSM_RUN_UNMERGE)) > return page; /* no need to copy it */ > } else if (!anon_vma) { > return page; /* no need to copy it */ > - } else if (page->index == linear_page_index(vma, address) && > + } else if (page->index == linear_page_index(vma, addr) && Hmm. page->index is going away. What should we do here instead? The rest of this looks good.