diff --git a/mm/filemap.c b/mm/filemap.c index 582f5317ff71..f89edad86842 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3482,7 +3482,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 { @@ -3504,7 +3504,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; @@ -3518,7 +3519,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;