diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2023-06-29 17:38:54 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2023-06-29 17:38:54 -0700 |
commit | 43ec8a620b38291c959afb47816cf2de6207125a (patch) | |
tree | 1b4f48f65965f8a848a149343f04946887b19650 /mm/mmap.c | |
parent | 3ad7b12c72ae6ba34d452e88a60c37c9fb368fbb (diff) | |
parent | 6c26bd4384da24841bac4f067741bbca18b0fb74 (diff) | |
download | lwn-43ec8a620b38291c959afb47816cf2de6207125a.tar.gz lwn-43ec8a620b38291c959afb47816cf2de6207125a.zip |
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()
Diffstat (limited to 'mm/mmap.c')
-rw-r--r-- | mm/mmap.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/mm/mmap.c b/mm/mmap.c index 9b5188b65800..3e5793ebbaae 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2489,7 +2489,8 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma, } vma_start_write(next); 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; vma_mark_detached(next, true); if (next->vm_flags & VM_LOCKED) @@ -2542,12 +2543,12 @@ do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma, BUG_ON(count != test_count); } #endif - /* Point of no return */ - error = -ENOMEM; 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; + /* Point of no return */ mm->locked_vm -= locked_vm; mm->map_count -= count; /* |