Commit c95d2b85 authored by William Lee Irwin III's avatar William Lee Irwin III Committed by Linus Torvalds

[PATCH] spurious remap_file_pages() -EINVAL

As ->vm_private_data is used as a cursor for swapout of VM_NONLINEAR vmas,
the check for NULL ->vm_private_data or VM_RESERVED is too strict, and
should allow VM_NONLINEAR vmas with non-NULL ->vm_private_data.

This fixes an issue on 2.6.7-mm5 where system calls to remap_file_pages()
spuriously failed while under memory pressure.
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 7e241bcb
...@@ -194,7 +194,8 @@ asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size, ...@@ -194,7 +194,8 @@ asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
* or VM_LOCKED, but VM_LOCKED could be revoked later on). * or VM_LOCKED, but VM_LOCKED could be revoked later on).
*/ */
if (vma && (vma->vm_flags & VM_SHARED) && if (vma && (vma->vm_flags & VM_SHARED) &&
(!vma->vm_private_data || (vma->vm_flags & VM_RESERVED)) && (!vma->vm_private_data ||
(vma->vm_flags & (VM_NONLINEAR|VM_RESERVED))) &&
vma->vm_ops && vma->vm_ops->populate && vma->vm_ops && vma->vm_ops->populate &&
end > start && start >= vma->vm_start && end > start && start >= vma->vm_start &&
end <= vma->vm_end) { end <= vma->vm_end) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment