Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ksm: use a folio in replace_page()

Replace three calls to compound_head() with one.

Link: https://lkml.kernel.org/r/20220902194653.1739778-46-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Matthew Wilcox (Oracle) and committed by
Andrew Morton
b4e6f66e 5fcd079a

+5 -3
+5 -3
mm/ksm.c
··· 1110 1110 struct page *kpage, pte_t orig_pte) 1111 1111 { 1112 1112 struct mm_struct *mm = vma->vm_mm; 1113 + struct folio *folio; 1113 1114 pmd_t *pmd; 1114 1115 pmd_t pmde; 1115 1116 pte_t *ptep; ··· 1179 1178 ptep_clear_flush(vma, addr, ptep); 1180 1179 set_pte_at_notify(mm, addr, ptep, newpte); 1181 1180 1181 + folio = page_folio(page); 1182 1182 page_remove_rmap(page, vma, false); 1183 - if (!page_mapped(page)) 1184 - try_to_free_swap(page); 1185 - put_page(page); 1183 + if (!folio_mapped(folio)) 1184 + folio_free_swap(folio); 1185 + folio_put(folio); 1186 1186 1187 1187 pte_unmap_unlock(ptep, ptl); 1188 1188 err = 0;