vserver 2.0 rc7
[linux-2.6.git] / arch / arm / mm / consistent.c
index 915cee5..26356ce 100644 (file)
@@ -323,7 +323,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);
@@ -342,11 +342,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);