]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - mm/mremap.c
KVM: PPC: use ticks, not usecs, for exit timing
[karo-tx-linux.git] / mm / mremap.c
index 1de98d492ddcd7adde4508bc3af3b5fcb6a465fe..a7c1f9f9b94157033e232ef2618ebb67e0eef99d 100644 (file)
@@ -277,9 +277,16 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr,
        if (old_len > vma->vm_end - addr)
                goto Efault;
 
-       if (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP)) {
-               if (new_len > old_len)
+       /* Need to be careful about a growing mapping */
+       if (new_len > old_len) {
+               unsigned long pgoff;
+
+               if (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP))
                        goto Efault;
+               pgoff = (addr - vma->vm_start) >> PAGE_SHIFT;
+               pgoff += vma->vm_pgoff;
+               if (pgoff + (new_len >> PAGE_SHIFT) < pgoff)
+                       goto Einval;
        }
 
        if (vma->vm_flags & VM_LOCKED) {