diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2013-10-27 17:53:40 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-10-29 19:51:57 -0400 |
commit | e6418fcc8adaa5c3911295cbe7ddd368b9788616 (patch) | |
tree | d50409fad508cefafd39d62fc0b4beb519810bc5 | |
parent | 75f0aef6220dc1e73bed238e57b20544ef4f38ec (diff) |
uio: Pass pointers to virt_to_page(), not integers
Most architectures define virt_to_page() as a macro that casts its
argument such that an argument of type unsigned long will be accepted
without complaint. However, the proper type is void *, and passing
unsigned long results in a warning on MIPS.
Compile-tested only.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/uio/uio.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c index c8e45add506e..e221f13fcb61 100644 --- a/drivers/uio/uio.c +++ b/drivers/uio/uio.c | |||
@@ -605,6 +605,7 @@ static int uio_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | |||
605 | struct uio_device *idev = vma->vm_private_data; | 605 | struct uio_device *idev = vma->vm_private_data; |
606 | struct page *page; | 606 | struct page *page; |
607 | unsigned long offset; | 607 | unsigned long offset; |
608 | void *addr; | ||
608 | 609 | ||
609 | int mi = uio_find_mem_index(vma); | 610 | int mi = uio_find_mem_index(vma); |
610 | if (mi < 0) | 611 | if (mi < 0) |
@@ -616,10 +617,11 @@ static int uio_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | |||
616 | */ | 617 | */ |
617 | offset = (vmf->pgoff - mi) << PAGE_SHIFT; | 618 | offset = (vmf->pgoff - mi) << PAGE_SHIFT; |
618 | 619 | ||
620 | addr = (void *)(unsigned long)idev->info->mem[mi].addr + offset; | ||
619 | if (idev->info->mem[mi].memtype == UIO_MEM_LOGICAL) | 621 | if (idev->info->mem[mi].memtype == UIO_MEM_LOGICAL) |
620 | page = virt_to_page(idev->info->mem[mi].addr + offset); | 622 | page = virt_to_page(addr); |
621 | else | 623 | else |
622 | page = vmalloc_to_page((void *)(unsigned long)idev->info->mem[mi].addr + offset); | 624 | page = vmalloc_to_page(addr); |
623 | get_page(page); | 625 | get_page(page); |
624 | vmf->page = page; | 626 | vmf->page = page; |
625 | return 0; | 627 | return 0; |