Merge branch 'work.get_user_pages_fast' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / drivers / rapidio / devices / rio_mport_cdev.c
index 5beb0c361076ba5869a259c8006c52367e41f748..665d9e94a7e1bee135b6e046d8e27a15579fee5d 100644 (file)
@@ -876,10 +876,10 @@ rio_dma_transfer(struct file *filp, u32 transfer_mode,
         * offset within the internal buffer specified by handle parameter.
         */
        if (xfer->loc_addr) {
-               unsigned long offset;
+               unsigned int offset;
                long pinned;
 
-               offset = (unsigned long)(uintptr_t)xfer->loc_addr & ~PAGE_MASK;
+               offset = lower_32_bits(offset_in_page(xfer->loc_addr));
                nr_pages = PAGE_ALIGN(xfer->length + offset) >> PAGE_SHIFT;
 
                page_list = kmalloc_array(nr_pages,
@@ -889,11 +889,9 @@ rio_dma_transfer(struct file *filp, u32 transfer_mode,
                        goto err_req;
                }
 
-               pinned = get_user_pages_unlocked(
+               pinned = get_user_pages_fast(
                                (unsigned long)xfer->loc_addr & PAGE_MASK,
-                               nr_pages,
-                               page_list,
-                               dir == DMA_FROM_DEVICE ? FOLL_WRITE : 0);
+                               nr_pages, dir == DMA_FROM_DEVICE, page_list);
 
                if (pinned != nr_pages) {
                        if (pinned < 0) {