summaryrefslogtreecommitdiff
path: root/arch/arm/mm/consistent.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mm/consistent.c')
-rw-r--r--arch/arm/mm/consistent.c6
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);