Commit 43ec8a62 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'unmap-fix-20230629' of git://git.infradead.org/users/dwmw2/linux

Pull mm fix from David Woodhouse:
 "Fix error return from do_vmi_align_munmap()"

* tag 'unmap-fix-20230629' of git://git.infradead.org/users/dwmw2/linux:
  mm/mmap: Fix error return in do_vmi_align_munmap()
parents 3ad7b12c 6c26bd43
...@@ -2489,7 +2489,8 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma, ...@@ -2489,7 +2489,8 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma,
} }
vma_start_write(next); vma_start_write(next);
mas_set_range(&mas_detach, next->vm_start, next->vm_end - 1); mas_set_range(&mas_detach, next->vm_start, next->vm_end - 1);
if (mas_store_gfp(&mas_detach, next, GFP_KERNEL)) error = mas_store_gfp(&mas_detach, next, GFP_KERNEL);
if (error)
goto munmap_gather_failed; goto munmap_gather_failed;
vma_mark_detached(next, true); vma_mark_detached(next, true);
if (next->vm_flags & VM_LOCKED) if (next->vm_flags & VM_LOCKED)
...@@ -2542,12 +2543,12 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma, ...@@ -2542,12 +2543,12 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma,
BUG_ON(count != test_count); BUG_ON(count != test_count);
} }
#endif #endif
/* Point of no return */
error = -ENOMEM;
vma_iter_set(vmi, start); vma_iter_set(vmi, start);
if (vma_iter_clear_gfp(vmi, start, end, GFP_KERNEL)) error = vma_iter_clear_gfp(vmi, start, end, GFP_KERNEL);
if (error)
goto clear_tree_failed; goto clear_tree_failed;
/* Point of no return */
mm->locked_vm -= locked_vm; mm->locked_vm -= locked_vm;
mm->map_count -= count; mm->map_count -= count;
/* /*
......
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