return vma;
 }
 
+/*
+ * Attempt to merge a newly mapped VMA with those adjacent to it. The caller
+ * must ensure that [start, end) does not overlap any existing VMA.
+ */
+static struct vm_area_struct
+*vma_merge_new_vma(struct vma_iterator *vmi, struct vm_area_struct *prev,
+                  struct vm_area_struct *vma, unsigned long start,
+                  unsigned long end, pgoff_t pgoff)
+{
+       return vma_merge(vmi, vma->vm_mm, prev, start, end, vma->vm_flags,
+                        vma->anon_vma, vma->vm_file, pgoff, vma_policy(vma),
+                        vma->vm_userfaultfd_ctx, anon_vma_name(vma));
+}
+
 /*
  * do_vmi_align_munmap() - munmap the aligned region from @start to @end.
  * @vmi: The vma iterator
                 * vma again as we may succeed this time.
                 */
                if (unlikely(vm_flags != vma->vm_flags && prev)) {
-                       merge = vma_merge(&vmi, mm, prev, vma->vm_start,
-                                   vma->vm_end, vma->vm_flags, NULL,
-                                   vma->vm_file, vma->vm_pgoff, NULL,
-                                   NULL_VM_UFFD_CTX, NULL);
+                       merge = vma_merge_new_vma(&vmi, prev, vma,
+                                                 vma->vm_start, vma->vm_end,
+                                                 vma->vm_pgoff);
                        if (merge) {
                                /*
                                 * ->mmap() can change vma->vm_file and fput
        if (new_vma && new_vma->vm_start < addr + len)
                return NULL;    /* should never get here */
 
-       new_vma = vma_merge(&vmi, mm, prev, addr, addr + len, vma->vm_flags,
-                           vma->anon_vma, vma->vm_file, pgoff, vma_policy(vma),
-                           vma->vm_userfaultfd_ctx, anon_vma_name(vma));
+       new_vma = vma_merge_new_vma(&vmi, prev, vma, addr, addr + len, pgoff);
        if (new_vma) {
                /*
                 * Source vma may have been merged into new_vma