]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/mmap: Use PHYS_PFN in mmap_region()
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Thu, 20 Jun 2024 01:44:38 +0000 (21:44 -0400)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Tue, 27 Aug 2024 16:49:10 +0000 (12:49 -0400)
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@Oracle.com>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Reviewed-by: Suren Baghdasaryan <surenb@google.com>
mm/mmap.c

index 217da37ef71de73a76131b51dd52c93b85913d93..f8515126e4357924746588ca1b69fc98c59b32a1 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1364,7 +1364,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;
@@ -1384,7 +1384,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;
 
        /* Find the first overlapping VMA */
@@ -1412,7 +1412,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;
@@ -1573,14 +1573,14 @@ expanded:
        /* Unmap any existing mapping in the area */
        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)