/* 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);
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) {
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;
}
/*