summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-09-24 14:13:57 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2010-09-24 14:13:57 -0700
commite92b05dec8865619ea2608c5c11a54b01467482f (patch)
tree8de4b388a3d70d068bf6ee0469a56987f68bef5e
parentd1f3e68efb4c98fa229b39ff09a8984ef16cafa4 (diff)
downloadlinux-e92b05dec8865619ea2608c5c11a54b01467482f.tar.bz2
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: Thomas Pollet <thomas.pollet@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/fremap.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/mm/fremap.c b/mm/fremap.c
index 46f5dacf90a2..7b7f852848de 100644
--- a/mm/fremap.c
+++ b/mm/fremap.c
@@ -125,7 +125,6 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
{
struct mm_struct *mm = current->mm;
struct address_space *mapping;
- unsigned long end = start + size;
struct vm_area_struct *vma;
int err = -EINVAL;
int has_write_lock = 0;
@@ -168,7 +167,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
if (!(vma->vm_flags & VM_CAN_NONLINEAR))
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;
/* Must set VM_NONLINEAR before any pages are populated. */