UIO: Take offset into account when determining number of pages that can be mapped

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Thursday, March 26, 2009 - 12:27 pm

Gitweb:     http://git.kernel.org/linus/6da2d377bba06c29d0bc41c8dee014164dec82a7
Commit:     6da2d377bba06c29d0bc41c8dee014164dec82a7
Parent:     1bafeb378e915f39b1bf44ee0871823d6f402ea5
Author:     Ian Abbott <abbotti@mev.co.uk>
AuthorDate: Tue Feb 24 17:22:59 2009 +0000
Committer:  Greg Kroah-Hartman <gregkh@suse.de>
CommitDate: Tue Mar 24 16:38:25 2009 -0700

    UIO: Take offset into account when determining number of pages that can be mapped
    
    If a UIO memory region does not start on a page boundary but straddles one,
    the number of actual pages that overlap the memory region may be calculated
    incorrectly because the offset isn't taken into account.  If userspace sets
    the mmap length to offset+size, it may fail with -EINVAL if UIO thinks it's
    trying to allocate too many pages.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Cc: Hans J. Koch <hjk@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/uio/uio.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
index 68a4965..03efb06 100644
--- a/drivers/uio/uio.c
+++ b/drivers/uio/uio.c
@@ -708,7 +708,8 @@ static int uio_mmap(struct file *filep, struct vm_area_struct *vma)
 		return -EINVAL;
 
 	requested_pages = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
-	actual_pages = (idev->info->mem[mi].size + PAGE_SIZE -1) >> PAGE_SHIFT;
+	actual_pages = ((idev->info->mem[mi].addr & ~PAGE_MASK)
+			+ idev->info->mem[mi].size + PAGE_SIZE -1) >> PAGE_SHIFT;
 	if (requested_pages > actual_pages)
 		return -EINVAL;
 
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
UIO: Take offset into account when determining number of p ..., Linux Kernel Mailing ..., (Thu Mar 26, 12:27 pm)