mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-09 00:36:51 -04:00
drm/etnaviv: Fix missing mutex_destroy()
Currently, the calling of mutex_destroy() is ignored on error handling code path. It is safe for now, since mutex_destroy() actually does nothing in non-debug builds. But the mutex_destroy() is used to mark the mutex uninitialized on debug builds, and any subsequent use of the mutex is forbidden. It also could lead to problems if mutex_destroy() gets extended, add missing mutex_destroy() to eliminate potential concerns. Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com> Signed-off-by: Sui Jingfeng <sui.jingfeng@linux.dev> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
This commit is contained in:
committed by
Lucas Stach
parent
b09ccba779
commit
deadf1ef4a
@@ -55,6 +55,7 @@ etnaviv_cmdbuf_suballoc_new(struct device *dev)
|
||||
return suballoc;
|
||||
|
||||
free_suballoc:
|
||||
mutex_destroy(&suballoc->lock);
|
||||
kfree(suballoc);
|
||||
|
||||
return ERR_PTR(ret);
|
||||
@@ -79,6 +80,7 @@ void etnaviv_cmdbuf_suballoc_destroy(struct etnaviv_cmdbuf_suballoc *suballoc)
|
||||
{
|
||||
dma_free_wc(suballoc->dev, SUBALLOC_SIZE, suballoc->vaddr,
|
||||
suballoc->paddr);
|
||||
mutex_destroy(&suballoc->lock);
|
||||
kfree(suballoc);
|
||||
}
|
||||
|
||||
|
||||
@@ -574,6 +574,7 @@ static int etnaviv_bind(struct device *dev)
|
||||
out_destroy_suballoc:
|
||||
etnaviv_cmdbuf_suballoc_destroy(priv->cmdbuf_suballoc);
|
||||
out_free_priv:
|
||||
mutex_destroy(&priv->gem_lock);
|
||||
kfree(priv);
|
||||
out_put:
|
||||
drm_dev_put(drm);
|
||||
|
||||
@@ -514,6 +514,7 @@ void etnaviv_gem_free_object(struct drm_gem_object *obj)
|
||||
etnaviv_obj->ops->release(etnaviv_obj);
|
||||
drm_gem_object_release(obj);
|
||||
|
||||
mutex_destroy(&etnaviv_obj->lock);
|
||||
kfree(etnaviv_obj);
|
||||
}
|
||||
|
||||
|
||||
@@ -1921,8 +1921,13 @@ static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
|
||||
|
||||
static void etnaviv_gpu_platform_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct etnaviv_gpu *gpu = dev_get_drvdata(&pdev->dev);
|
||||
|
||||
component_del(&pdev->dev, &gpu_ops);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
mutex_destroy(&gpu->lock);
|
||||
mutex_destroy(&gpu->sched_lock);
|
||||
}
|
||||
|
||||
static int etnaviv_gpu_rpm_suspend(struct device *dev)
|
||||
|
||||
@@ -358,7 +358,7 @@ static void etnaviv_iommu_context_free(struct kref *kref)
|
||||
container_of(kref, struct etnaviv_iommu_context, refcount);
|
||||
|
||||
etnaviv_cmdbuf_suballoc_unmap(context, &context->cmdbuf_mapping);
|
||||
|
||||
mutex_destroy(&context->lock);
|
||||
context->global->ops->free(context);
|
||||
}
|
||||
void etnaviv_iommu_context_put(struct etnaviv_iommu_context *context)
|
||||
|
||||
Reference in New Issue
Block a user