diff mbox series

[-next] drm/etnaviv: fix missing unlock on error in etnaviv_iommuv1_context_alloc()

Message ID 20190819061733.50023-1-weiyongjun1@huawei.com (mailing list archive)
State New, archived
Headers show
Series [-next] drm/etnaviv: fix missing unlock on error in etnaviv_iommuv1_context_alloc() | expand

Commit Message

Wei Yongjun Aug. 19, 2019, 6:17 a.m. UTC
Add the missing unlock before return from function etnaviv_iommuv1_context_alloc()
in the error handling case.

Fixes: 27b67278e007 ("drm/etnaviv: rework MMU handling")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
---
 drivers/gpu/drm/etnaviv/etnaviv_iommu.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Lucas Stach Sept. 2, 2019, 10:50 a.m. UTC | #1
On Mo, 2019-08-19 at 06:17 +0000, Wei Yongjun wrote:
> Add the missing unlock before return from function
> etnaviv_iommuv1_context_alloc()
> in the error handling case.
> 
> Fixes: 27b67278e007 ("drm/etnaviv: rework MMU handling")
> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>

Thanks, applied.

For my education, can you tell me which tool you did use to catch this
issue?

Regards,
Lucas

> ---
>  drivers/gpu/drm/etnaviv/etnaviv_iommu.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_iommu.c
> b/drivers/gpu/drm/etnaviv/etnaviv_iommu.c
> index aac8dbf3ea56..1a7c89a67bea 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_iommu.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_iommu.c
> @@ -140,8 +140,10 @@ etnaviv_iommuv1_context_alloc(struct
> etnaviv_iommu_global *global)
>  	}
>  
>  	v1_context = kzalloc(sizeof(*v1_context), GFP_KERNEL);
> -	if (!v1_context)
> +	if (!v1_context) {
> +		mutex_unlock(&global->lock);
>  		return NULL;
> +	}
>  
>  	v1_context->pgtable_cpu = dma_alloc_wc(global->dev, PT_SIZE,
>  					       &v1_context-
> >pgtable_dma,
> 
> 
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_iommu.c b/drivers/gpu/drm/etnaviv/etnaviv_iommu.c
index aac8dbf3ea56..1a7c89a67bea 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_iommu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_iommu.c
@@ -140,8 +140,10 @@  etnaviv_iommuv1_context_alloc(struct etnaviv_iommu_global *global)
 	}
 
 	v1_context = kzalloc(sizeof(*v1_context), GFP_KERNEL);
-	if (!v1_context)
+	if (!v1_context) {
+		mutex_unlock(&global->lock);
 		return NULL;
+	}
 
 	v1_context->pgtable_cpu = dma_alloc_wc(global->dev, PT_SIZE,
 					       &v1_context->pgtable_dma,