]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm: Introduce vma_next() and vma_prev()
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Mon, 4 Jan 2021 20:13:14 +0000 (15:13 -0500)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Fri, 1 Oct 2021 17:55:46 +0000 (13:55 -0400)
Rename internal vma_next() to _vma_next().

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
include/linux/mm.h
mm/mmap.c

index ae1bf8087f0399d8c8ec0d94419c364d14924b9e..68e315cb10562e7f9209ca1093712a0ca662fa47 100644 (file)
@@ -2701,6 +2701,18 @@ struct vm_area_struct *vma_lookup(struct mm_struct *mm, unsigned long addr)
        return mtree_load(&mm->mm_mt, addr);
 }
 
+static inline struct vm_area_struct *vma_next(struct mm_struct *mm,
+                       const struct vm_area_struct *vma)
+{
+       return mt_next(&mm->mm_mt, vma->vm_end - 1, ULONG_MAX);
+}
+
+static inline struct vm_area_struct *vma_prev(struct mm_struct *mm,
+                       const struct vm_area_struct *vma)
+{
+       return mt_prev(&mm->mm_mt, vma->vm_start, 0);
+}
+
 static inline unsigned long vm_start_gap(struct vm_area_struct *vma)
 {
        unsigned long vm_start = vma->vm_start;
index 19fb9d61f4f4ec88c7399d7b87fdd8b0ce0d45e2..26eef42b8c0ac16da9be029014aa4f4bab6b8ece 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -483,7 +483,7 @@ bool range_has_overlap(struct mm_struct *mm, unsigned long start,
 }
 
 /*
- * vma_next() - Get the next VMA.
+ * _vma_next() - Get the next VMA or the first.
  * @mm: The mm_struct.
  * @vma: The current vma.
  *
@@ -491,7 +491,7 @@ bool range_has_overlap(struct mm_struct *mm, unsigned long start,
  *
  * Returns: The next VMA after @vma.
  */
-static inline struct vm_area_struct *vma_next(struct mm_struct *mm,
+static inline struct vm_area_struct *_vma_next(struct mm_struct *mm,
                                         struct vm_area_struct *vma)
 {
        if (!vma)
@@ -1183,7 +1183,7 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
        if (vm_flags & VM_SPECIAL)
                return NULL;
 
-       next = vma_next(mm, prev);
+       next = _vma_next(mm, prev);
        area = next;
        if (area && area->vm_end == end)                /* cases 6, 7, 8 */
                next = next->vm_next;
@@ -2340,7 +2340,7 @@ static void unmap_region(struct mm_struct *mm,
                struct vm_area_struct *vma, struct vm_area_struct *prev,
                unsigned long start, unsigned long end)
 {
-       struct vm_area_struct *next = vma_next(mm, prev);
+       struct vm_area_struct *next = _vma_next(mm, prev);
        struct mmu_gather tlb;
 
        lru_add_drain();
@@ -2494,7 +2494,7 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
                if (error)
                        return error;
                prev = vma;
-               vma = vma_next(mm, prev);
+               vma = _vma_next(mm, prev);
                mas->index = start;
                mas_reset(mas);
        } else {
@@ -2511,7 +2511,7 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
                int error = __split_vma(mm, last, end, 1);
                if (error)
                        return error;
-               vma = vma_next(mm, prev);
+               vma = _vma_next(mm, prev);
                mas_reset(mas);
        }