]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
convert do_brk_munmap to use prealloc
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 21 Apr 2022 22:01:54 +0000 (18:01 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 21 Apr 2022 22:35:10 +0000 (18:35 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
mm/mmap.c

index 90d50787c4fd952030cd40e55e3c09d6f6624692..f38e998b8c328861381e8937eaf6b96731b8ed63 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2925,6 +2925,9 @@ static int do_brk_munmap(struct ma_state *mas, struct vm_area_struct *vma,
 
        /* Change the oldbrk of vma to the newbrk of the munmap area */
        vma_adjust_trans_huge(vma, vma->vm_start, newbrk, 0);
+       if (mas_preallocate(mas, vma, GFP_KERNEL))
+               return -ENOMEM;
+
        if (vma->anon_vma) {
                anon_vma_lock_write(vma->anon_vma);
                anon_vma_interval_tree_pre_update_vma(vma);
@@ -2936,8 +2939,7 @@ static int do_brk_munmap(struct ma_state *mas, struct vm_area_struct *vma,
        unmap.vm_end = oldbrk;
        if (vma->anon_vma)
                vma_set_anonymous(&unmap);
-       if (vma_mas_remove(&unmap, mas))
-               goto mas_store_fail;
+       vma_mas_remove(&unmap, mas);
 
        vma->vm_end = newbrk;
        if (vma->anon_vma) {
@@ -2960,15 +2962,6 @@ static int do_brk_munmap(struct ma_state *mas, struct vm_area_struct *vma,
 munmap_full_vma:
        validate_mm_mt(mm);
        return ret;
-
-mas_store_fail:
-       mas_unlock(mas);
-       vma->vm_end = oldbrk;
-       if (vma->anon_vma) {
-               anon_vma_interval_tree_post_update_vma(vma);
-               anon_vma_unlock_write(vma->anon_vma);
-       }
-       return -ENOMEM;
 }
 
 /*