From: Liam R. Howlett Date: Thu, 21 Apr 2022 22:01:54 +0000 (-0400) Subject: convert do_brk_munmap to use prealloc X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=63c547135d1e5febe2f68bd7a54250f33cd21fbc;p=users%2Fjedix%2Flinux-maple.git convert do_brk_munmap to use prealloc Signed-off-by: Liam R. Howlett --- diff --git a/mm/mmap.c b/mm/mmap.c index 90d50787c4fd..f38e998b8c32 100644 --- 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; } /*