On Fri, Nov 18, 2022 at 01:16:20AM -0800, Hugh Dickins wrote: > It's hard to add a page_add_anon_rmap() into __split_huge_pmd_locked()'s > HPAGE_PMD_NR set_pte_at() loop, without wincing at the "freeze" case's > HPAGE_PMD_NR page_remove_rmap() loop below it. > > It's just a mistake to add rmaps in the "freeze" (insert migration entries > prior to splitting huge page) case: the pmd_migration case already avoids > doing that, so just follow its lead. page_add_ref() versus put_page() > likewise. But why is one more put_page() needed in the "freeze" case? > Because it's removing the pmd rmap, already removed when pmd_migration > (and freeze and pmd_migration are mutually exclusive cases). > > Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx> Acked-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> -- Kiryl Shutsemau / Kirill A. Shutemov