diff options
author | James Morris <jmorris@namei.org> | 2011-04-19 07:32:41 -0400 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2011-04-19 07:32:41 -0400 |
commit | d4ab4e6a23f805abb8fc3cc34525eec3788aeca1 (patch) | |
tree | eefd82c155bc27469a85667d759cd90facf4a6e3 /mm/mremap.c | |
parent | c0fa797ae6cd02ff87c0bfe0d509368a3b45640e (diff) | |
parent | 96fd2d57b8252e16dfacf8941f7a74a6119197f5 (diff) |
Merge branch 'master'; commit 'v2.6.39-rc3' into next
Diffstat (limited to 'mm/mremap.c')
-rw-r--r-- | mm/mremap.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/mm/mremap.c b/mm/mremap.c index 1de98d492ddc..a7c1f9f9b941 100644 --- a/mm/mremap.c +++ b/mm/mremap.c | |||
@@ -277,9 +277,16 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr, | |||
277 | if (old_len > vma->vm_end - addr) | 277 | if (old_len > vma->vm_end - addr) |
278 | goto Efault; | 278 | goto Efault; |
279 | 279 | ||
280 | if (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP)) { | 280 | /* Need to be careful about a growing mapping */ |
281 | if (new_len > old_len) | 281 | if (new_len > old_len) { |
282 | unsigned long pgoff; | ||
283 | |||
284 | if (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP)) | ||
282 | goto Efault; | 285 | goto Efault; |
286 | pgoff = (addr - vma->vm_start) >> PAGE_SHIFT; | ||
287 | pgoff += vma->vm_pgoff; | ||
288 | if (pgoff + (new_len >> PAGE_SHIFT) < pgoff) | ||
289 | goto Einval; | ||
283 | } | 290 | } |
284 | 291 | ||
285 | if (vma->vm_flags & VM_LOCKED) { | 292 | if (vma->vm_flags & VM_LOCKED) { |