mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-12 00:34:43 +08:00
drm/etnaviv: Improve unlocking of a mutex in etnaviv_iommu_map_gem()
Add a jump target so that a call of the function "mutex_unlock" is stored only once at the end of this function implementation. Replace three calls by goto statements. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
This commit is contained in:
parent
b6047ebaf7
commit
ff98159577
@ -263,18 +263,16 @@ int etnaviv_iommu_map_gem(struct etnaviv_iommu *mmu,
|
||||
if (iova < 0x80000000 - sg_dma_len(sgt->sgl)) {
|
||||
mapping->iova = iova;
|
||||
list_add_tail(&mapping->mmu_node, &mmu->mappings);
|
||||
mutex_unlock(&mmu->lock);
|
||||
return 0;
|
||||
ret = 0;
|
||||
goto unlock;
|
||||
}
|
||||
}
|
||||
|
||||
node = &mapping->vram_node;
|
||||
|
||||
ret = etnaviv_iommu_find_iova(mmu, node, etnaviv_obj->base.size);
|
||||
if (ret < 0) {
|
||||
mutex_unlock(&mmu->lock);
|
||||
return ret;
|
||||
}
|
||||
if (ret < 0)
|
||||
goto unlock;
|
||||
|
||||
mmu->last_iova = node->start + etnaviv_obj->base.size;
|
||||
mapping->iova = node->start;
|
||||
@ -283,12 +281,12 @@ int etnaviv_iommu_map_gem(struct etnaviv_iommu *mmu,
|
||||
|
||||
if (ret < 0) {
|
||||
drm_mm_remove_node(node);
|
||||
mutex_unlock(&mmu->lock);
|
||||
return ret;
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
list_add_tail(&mapping->mmu_node, &mmu->mappings);
|
||||
mmu->need_flush = true;
|
||||
unlock:
|
||||
mutex_unlock(&mmu->lock);
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user