}
 
        vma_mas_store(vma, mas);
-       __vma_link_list(mm, vma, prev);
        __vma_link_file(vma);
 
        if (mapping)
        }
 
        vma_mt_store(mm, vma);
-       __vma_link_list(mm, vma, prev);
        __vma_link_file(vma);
 
        if (mapping)
 
        BUG_ON(range_has_overlap(mm, vma->vm_start, vma->vm_end, &prev));
        vma_mt_store(mm, vma);
-       __vma_link_list(mm, vma, prev);
        mm->map_count++;
 }
 
        }
 
        /* Expanding over the next vma */
-       if (remove_next) {
-               /* Remove from mm linked list - also updates highest_vm_end */
-               __vma_unlink_list(mm, next);
-
-               if (file)
-                       __remove_shared_vm_struct(next, file, mapping);
-
+       if (remove_next && file) {
+               __remove_shared_vm_struct(next, file, mapping);
        } else if (!next) {
                mm->highest_vm_end = vm_end_gap(vma);
        }
                flush_dcache_mmap_unlock(mapping);
        }
 
-       if (remove_next) {
-               __vma_unlink_list(mm, next);
-               if (file)
-                       __remove_shared_vm_struct(next, file, mapping);
+       if (remove_next && file) {
+               __remove_shared_vm_struct(next, file, mapping);
        } else if (insert) {
                /*
                 * split_vma has split insert from vma, and needs
        if (!prev)
                prev = mas_prev(mas, 0);
 
-       __vma_link_list(mm, vma, prev);
        mm->map_count++;
        *brkvma = vma;
 out:
 
 }
 EXPORT_SYMBOL(memdup_user_nul);
 
-void __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
-               struct vm_area_struct *prev)
-{
-       struct vm_area_struct *next;
-
-       vma->vm_prev = prev;
-       if (prev) {
-               next = prev->vm_next;
-               prev->vm_next = vma;
-       } else {
-               next = mm->mmap;
-               mm->mmap = vma;
-       }
-       vma->vm_next = next;
-       if (next)
-               next->vm_prev = vma;
-       else
-               mm->highest_vm_end = vm_end_gap(vma);
-}
-
-void __vma_unlink_list(struct mm_struct *mm, struct vm_area_struct *vma)
-{
-       struct vm_area_struct *prev, *next;
-
-       next = vma->vm_next;
-       prev = vma->vm_prev;
-       if (prev)
-               prev->vm_next = next;
-       else
-               mm->mmap = next;
-       if (next)
-               next->vm_prev = prev;
-       else {
-               if (prev)
-                       mm->highest_vm_end = vm_end_gap(prev);
-               else
-                       mm->highest_vm_end = 0;
-       }
-}
-
 /* Check if the vma is being used as a stack by this task */
 int vma_is_stack_for_current(struct vm_area_struct *vma)
 {