diff options
Diffstat (limited to 'arch/arm/mm/consistent.c')
| -rw-r--r-- | arch/arm/mm/consistent.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm/mm/consistent.c b/arch/arm/mm/consistent.c index 3c2bde8e357b..36c7961bc1bd 100644 --- a/arch/arm/mm/consistent.c +++ b/arch/arm/mm/consistent.c @@ -322,7 +322,7 @@ EXPORT_SYMBOL(dma_mmap_writecombine); void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr_t handle) { struct vm_region *c; - unsigned long flags; + unsigned long flags, addr; pte_t *ptep; size = PAGE_ALIGN(size); @@ -341,11 +341,13 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr } ptep = consistent_pte + CONSISTENT_OFFSET(c->vm_start); + addr = c->vm_start; do { - pte_t pte = ptep_get_and_clear(ptep); + pte_t pte = ptep_get_and_clear(&init_mm, addr, ptep); unsigned long pfn; ptep++; + addr += PAGE_SIZE; if (!pte_none(pte) && pte_present(pte)) { pfn = pte_pfn(pte); |
