Commit e92b05de authored by Linus Torvalds's avatar Linus Torvalds

fremap: get rid of broken 'end' variable

Thomas Pollet points out that the 'end' variable is broken.  It was
computed based on start/size before they were page-aligned, and as such
doesn't actually match any of the other actions we take.  The overflow
test on end was also redundant, since we had already tested it with the
properly aligned version.

So just get rid of it entirely.  The one remaining use for that broken
variable can just use 'start+size' like all the other cases already did.
Reported-by: default avatarThomas Pollet <thomas.pollet@gmail.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d1f3e68e
...@@ -125,7 +125,6 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, ...@@ -125,7 +125,6 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
{ {
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
struct address_space *mapping; struct address_space *mapping;
unsigned long end = start + size;
struct vm_area_struct *vma; struct vm_area_struct *vma;
int err = -EINVAL; int err = -EINVAL;
int has_write_lock = 0; int has_write_lock = 0;
...@@ -168,7 +167,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, ...@@ -168,7 +167,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
if (!(vma->vm_flags & VM_CAN_NONLINEAR)) if (!(vma->vm_flags & VM_CAN_NONLINEAR))
goto out; goto out;
if (end <= start || start < vma->vm_start || end > vma->vm_end) if (start < vma->vm_start || start + size > vma->vm_end)
goto out; goto out;
/* Must set VM_NONLINEAR before any pages are populated. */ /* Must set VM_NONLINEAR before any pages are populated. */
......
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