]> git.hungrycats.org Git - linux/commitdiff
[ARM] Take account of vm_pgoff for DMA mmap
authorRussell King <rmk@flint.arm.linux.org.uk>
Fri, 18 Feb 2005 22:24:01 +0000 (22:24 +0000)
committerRussell King <rmk@flint.arm.linux.org.uk>
Fri, 18 Feb 2005 22:24:01 +0000 (22:24 +0000)
The DMA mmap code was ignoring vm_pgoff which prevented a partial
mmap() of a DMA buffer.

Signed-off-by: Russell King <rmk@arm.linux.org.uk>
arch/arm/mm/consistent.c

index 718c4c3d01e50709e85877283dfc4ba77db1b433..3c2bde8e357ba770d590e492117e21b414dc2ff3 100644 (file)
@@ -284,13 +284,15 @@ static int dma_mmap(struct device *dev, struct vm_area_struct *vma,
        spin_unlock_irqrestore(&consistent_lock, flags);
 
        if (c) {
+               unsigned long off = vma->vm_pgoff;
+
                kern_size = (c->vm_end - c->vm_start) >> PAGE_SHIFT;
 
-               if (vma->vm_pgoff < kern_size &&
-                   user_size <= (kern_size - vma->vm_pgoff)) {
+               if (off < kern_size &&
+                   user_size <= (kern_size - off)) {
                        vma->vm_flags |= VM_RESERVED;
                        ret = remap_pfn_range(vma, vma->vm_start,
-                                             page_to_pfn(c->vm_pages),
+                                             page_to_pfn(c->vm_pages) + off,
                                              user_size, vma->vm_page_prot);
                }
        }