rk3368: iommu: fix region free position when iovmm_activate failed

Signed-off-by: Simon <xxm@rock-chips.com>
This commit is contained in:
Simon 2015-05-25 11:48:31 +08:00
parent 66944054a5
commit 9b27f65bf6

View File

@ -148,18 +148,18 @@ dma_addr_t rockchip_iovmm_map(struct device *dev,
spin_unlock(&vmm->lock);
ret = rockchip_iommu_tlb_invalidate(dev);
if (ret)
if (ret) {
spin_lock(&vmm->lock);
list_del(&region->node);
spin_unlock(&vmm->lock);
goto err_map_map;
}
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: