From 9b27f65bf60885fcd2849a65d26379f2989d8bc1 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 25 May 2015 11:48:31 +0800 Subject: [PATCH] rk3368: iommu: fix region free position when iovmm_activate failed Signed-off-by: Simon --- drivers/iommu/rockchip-iovmm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/rockchip-iovmm.c b/drivers/iommu/rockchip-iovmm.c index b59bee54712b..595b75c23d04 100644 --- a/drivers/iommu/rockchip-iovmm.c +++ b/drivers/iommu/rockchip-iovmm.c @@ -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(®ion->node); + spin_unlock(&vmm->lock); goto err_map_map; - + } dev_dbg(dev->archdata.iommu, "IOVMM: Allocated VM region @ %p/%#X bytes.\n", ®ion->start, region->size); return region->start; err_map_map: - spin_lock(&vmm->lock); - list_del(®ion->node); - spin_unlock(&vmm->lock); iommu_unmap(vmm->domain, start, mapped_size); gen_pool_free(vmm->vmm_pool, start, size); err_map_noiomem: -- 2.34.1