--- x/include/linux/rmap.h +++ y/include/linux/rmap.h @@ -213,8 +213,17 @@ static inline void __folio_rmap_sanity_c */ VM_WARN_ON_ONCE(nr_pages <= 0); - VM_WARN_ON_FOLIO(page_folio(page) != folio, folio); - VM_WARN_ON_FOLIO(page_folio(page + nr_pages - 1) != folio, folio); + if (!folio_test_large(folio)) { + VM_WARN_ON_FOLIO(page_folio(page) != folio, folio); + VM_WARN_ON_FOLIO(page_folio(page + nr_pages - 1) != folio, folio); + } else { + struct page *p = compound_head(page); + + VM_WARN_ON_FOLIO(page_folio(p) != folio, folio); + p = page + nr_pages - 1; + p = compound_head(p); + VM_WARN_ON_FOLIO(page_folio(p) != folio, folio); + } switch (level) { case RMAP_LEVEL_PTE: