rk3368: iommu: delete region list if map failed
authorSimon <xxm@rock-chips.com>
Fri, 17 Apr 2015 06:27:47 +0000 (14:27 +0800)
committerSimon <xxm@rock-chips.com>
Fri, 15 May 2015 07:26:54 +0000 (15:26 +0800)
Signed-off-by: Simon <xxm@rock-chips.com>
drivers/iommu/rockchip-iovmm.c

index c83573edaa419c4a7c901bb235925be9812e1d07..d1100d6fcd248fabfd4b96ff70cae068a45a741e 100755 (executable)
@@ -156,10 +156,13 @@ dma_addr_t rockchip_iovmm_map(struct device *dev,
        }
        dev_dbg(dev->archdata.iommu, "IOVMM: Allocated VM region @ %p/%#X bytes.\n",
        &region->start, region->size);
-       
+
        return region->start;
 
 err_map_map:
+       spin_lock(&vmm->lock);
+       list_del(&region->node);
+       spin_unlock(&vmm->lock);
        iommu_unmap(vmm->domain, start, mapped_size);
        gen_pool_free(vmm->vmm_pool, start, size);
 err_map_noiomem: