--- x/mm/vma.c +++ y/mm/vma.c @@ -1615,16 +1615,16 @@ static struct vm_area_struct *vma_modify (vma->vm_start != start || vma->vm_end != end)); /* Split any preceding portion of the VMA. */ - if (vma->vm_start < start) { - int err = split_vma(vmg->vmi, vma, start, 1); + if (vma->vm_start < vmg->start) { + int err = split_vma(vmg->vmi, vma, vmg->start, 1); if (err) return ERR_PTR(err); } /* Split any trailing portion of the VMA. */ - if (vma->vm_end > end) { - int err = split_vma(vmg->vmi, vma, end, 0); + if (vma->vm_end > vmg->end) { + int err = split_vma(vmg->vmi, vma, vmg->end, 0); if (err) return ERR_PTR(err);