diff --git a/mm/filemap.c b/mm/filemap.c index 014b73eb96a1..d6b27083a5af 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3480,7 +3480,7 @@ static vm_fault_t filemap_map_folio_range(struct vm_fault *vmf, struct file *file = vma->vm_file; struct page *page = folio_page(folio, start); unsigned int mmap_miss = READ_ONCE(file->f_ra.mmap_miss); - unsigned int count = 0; + unsigned int count = 0, i; pte_t *old_ptep = vmf->pte; do { @@ -3502,7 +3502,8 @@ static vm_fault_t filemap_map_folio_range(struct vm_fault *vmf, continue; skip: if (count) { - set_pte_range(vmf, folio, page, count, addr); + for (i = 0; i < count; i++) + set_pte_range(vmf, folio, page, 1, addr); folio_ref_add(folio, count); if (in_range(vmf->address, addr, count)) ret = VM_FAULT_NOPAGE; @@ -3516,7 +3517,8 @@ static vm_fault_t filemap_map_folio_range(struct vm_fault *vmf, } while (--nr_pages > 0); if (count) { - set_pte_range(vmf, folio, page, count, addr); + for (i = 0; i < count; i++) + set_pte_range(vmf, folio, page, 1, addr); folio_ref_add(folio, count); if (in_range(vmf->address, addr, count)) ret = VM_FAULT_NOPAGE;