Skip to content

Commit

Permalink
fremap: get rid of broken 'end' variable
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Linus Torvalds committed Sep 24, 2010
1 parent d1f3e68 commit e92b05d
Showing 1 changed file with 1 addition and 2 deletions.
3 changes: 1 addition & 2 deletions mm/fremap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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. */
Expand Down

0 comments on commit e92b05d

Please sign in to comment.