{
bool store = false;
- anon_vma_lock_write(vma->anon_vma);
- anon_vma_interval_tree_pre_update_vma(vma);
+ if (vma->anon_vma) {
+ anon_vma_lock_write(vma->anon_vma);
+ anon_vma_interval_tree_pre_update_vma(vma);
+ }
// changing the back.
if (vma->vm_end > new_end) {
vma_mt_store(vma->vm_mm, vma);
- anon_vma_interval_tree_post_update_vma(vma);
- anon_vma_unlock_write(vma->anon_vma);
+ if (vma->anon_vma) {
+ anon_vma_interval_tree_post_update_vma(vma);
+ anon_vma_unlock_write(vma->anon_vma);
+ }
}
static void vma_link(struct mm_struct *mm, 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);
vma_mt_brk(vma, newbrk);
- // Handle usertfaults here.
- //
unmap_pages = vma_pages(&unmap);
if (unmap.vm_flags & VM_LOCKED) {