Commit ddb09754 authored by Bin Wang's avatar Bin Wang Committed by Greg Kroah-Hartman

uio: fix vma io range check in mmap

the vma range size is always page size aligned in mmap, while the
real io space range may not be page aligned, thus leading to range
check failure in the uio_mmap_physical().

for example, in a case of io range size "mem->size == 1KB", and we
have (vma->vm_end - vma->vm_start) == 4KB, due to "len" is aligned
to page size in do_mmap_pgoff().

now fix this issue by align mem->size to page size in the check.
Signed-off-by: default avatarBin Wang <binw@marvell.com>
Signed-off-by: default avatarNobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ca3c61f3
...@@ -655,7 +655,7 @@ static int uio_mmap_physical(struct vm_area_struct *vma) ...@@ -655,7 +655,7 @@ static int uio_mmap_physical(struct vm_area_struct *vma)
if (mem->addr & ~PAGE_MASK) if (mem->addr & ~PAGE_MASK)
return -ENODEV; return -ENODEV;
if (vma->vm_end - vma->vm_start > mem->size) if (vma->vm_end - vma->vm_start > PAGE_ALIGN(mem->size))
return -EINVAL; return -EINVAL;
vma->vm_ops = &uio_physical_vm_ops; vma->vm_ops = &uio_physical_vm_ops;
......
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