On Thu, Jul 04, 2024 at 02:27:16PM GMT, Liam R. Howlett wrote: > From: "Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx> > > Instead of shifting the length by PAGE_SIZE, use PHYS_PFN. Also use the > existing local variable everywhere instead of some of the time. > > Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> > --- > mm/mmap.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/mm/mmap.c b/mm/mmap.c > index 0c334eeae8cd..b14da6bd257f 100644 > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -2935,7 +2935,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, > struct mm_struct *mm = current->mm; > struct vm_area_struct *vma = NULL; > struct vm_area_struct *next, *prev, *merge; > - pgoff_t pglen = len >> PAGE_SHIFT; > + pgoff_t pglen = PHYS_PFN(len); > unsigned long charged = 0; > struct vma_munmap_struct vms; > struct ma_state mas_detach; > @@ -2955,7 +2955,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, > * MAP_FIXED may remove pages of mappings that intersects with requested > * mapping. Account for the pages it would unmap. > */ > - if (!may_expand_vm(mm, vm_flags, (len >> PAGE_SHIFT) - nr_pages)) > + if (!may_expand_vm(mm, vm_flags, pglen - nr_pages)) > return -ENOMEM; > > if (unlikely(!can_modify_mm(mm, addr, end))) > @@ -2990,7 +2990,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, > * Private writable mapping: check memory availability > */ > if (accountable_mapping(file, vm_flags)) { > - charged = len >> PAGE_SHIFT; > + charged = pglen; > charged -= nr_accounted; > if (security_vm_enough_memory_mm(mm, charged)) > goto abort_munmap; > @@ -3149,14 +3149,14 @@ unsigned long mmap_region(struct file *file, unsigned long addr, > if (vms.nr_pages) > vms_complete_munmap_vmas(&vms, &mas_detach); > > - vm_stat_account(mm, vm_flags, len >> PAGE_SHIFT); > + vm_stat_account(mm, vm_flags, pglen); > if (vm_flags & VM_LOCKED) { > if ((vm_flags & VM_SPECIAL) || vma_is_dax(vma) || > is_vm_hugetlb_page(vma) || > vma == get_gate_vma(current->mm)) > vm_flags_clear(vma, VM_LOCKED_MASK); > else > - mm->locked_vm += (len >> PAGE_SHIFT); > + mm->locked_vm += pglen; > } > > if (file) > -- > 2.43.0 > Maybe I should literally look ahead before making comments :)) thanks for reading my mind and doing what I asked though! ;) However I don't think you've fixed the duplication of PHYS_PFN(vm_end - vm_start) in count_vma_pages_range() - still worth doing I think. Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>