--- x/mm/filemap.c +++ y/mm/filemap.c @@ -3636,6 +3636,7 @@ static vm_fault_t filemap_map_folio_rang continue; skip: if (count) { + VM_WARN_ON_FOLIO(page_folio(page) != folio, folio); set_pte_range(vmf, folio, page, count, addr); *rss += count; folio_ref_add(folio, count); @@ -3739,7 +3740,7 @@ vm_fault_t filemap_map_pages(struct vm_f vmf->pte += xas.xa_index - last_pgoff; last_pgoff = xas.xa_index; end = folio_next_index(folio) - 1; - nr_pages = min(end, end_pgoff) - xas.xa_index + 1; + nr_pages = min(end, end_pgoff) - xas.xa_index; if (!folio_test_large(folio)) ret |= filemap_map_order0_folio(vmf,