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: