Commit 3c441ab7 authored by Liam R. Howlett's avatar Liam R. Howlett Committed by Andrew Morton

mmap: convert vma_expand() to use vma iterator

Use the vma iterator instead of the maple state for type safety and for
consistency through the mm code.

Link: https://lkml.kernel.org/r/20230120162650.984577-14-Liam.Howlett@oracle.comSigned-off-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 183654ce
...@@ -527,7 +527,7 @@ static int vma_link(struct mm_struct *mm, struct vm_area_struct *vma) ...@@ -527,7 +527,7 @@ static int vma_link(struct mm_struct *mm, struct vm_area_struct *vma)
* *
* Returns: 0 on success * Returns: 0 on success
*/ */
inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma, inline int vma_expand(struct vma_iterator *vmi, struct vm_area_struct *vma,
unsigned long start, unsigned long end, pgoff_t pgoff, unsigned long start, unsigned long end, pgoff_t pgoff,
struct vm_area_struct *next) struct vm_area_struct *next)
{ {
...@@ -556,7 +556,7 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma, ...@@ -556,7 +556,7 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma,
/* Only handles expanding */ /* Only handles expanding */
VM_BUG_ON(vma->vm_start < start || vma->vm_end > end); VM_BUG_ON(vma->vm_start < start || vma->vm_end > end);
if (mas_preallocate(mas, GFP_KERNEL)) if (vma_iter_prealloc(vmi))
goto nomem; goto nomem;
vma_adjust_trans_huge(vma, start, end, 0); vma_adjust_trans_huge(vma, start, end, 0);
...@@ -581,8 +581,7 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma, ...@@ -581,8 +581,7 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma,
vma->vm_start = start; vma->vm_start = start;
vma->vm_end = end; vma->vm_end = end;
vma->vm_pgoff = pgoff; vma->vm_pgoff = pgoff;
/* Note: mas must be pointing to the expanding VMA */ vma_iter_store(vmi, vma);
vma_mas_store(vma, mas);
if (file) { if (file) {
vma_interval_tree_insert(vma, root); vma_interval_tree_insert(vma, root);
...@@ -2600,7 +2599,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, ...@@ -2600,7 +2599,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
/* Actually expand, if possible */ /* Actually expand, if possible */
if (vma && if (vma &&
!vma_expand(&vmi.mas, vma, merge_start, merge_end, vm_pgoff, next)) { !vma_expand(&vmi, vma, merge_start, merge_end, vm_pgoff, next)) {
khugepaged_enter_vma(vma, vm_flags); khugepaged_enter_vma(vma, vm_flags);
goto expanded; goto expanded;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment