2019-08-19 06:14:52

by Wei Yongjun

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

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 <[email protected]>
---
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,




2019-09-02 10:52:03

by Lucas Stach

[permalink] [raw]
Subject: Re: [PATCH -next] drm/etnaviv: fix missing unlock on error in etnaviv_iommuv1_context_alloc()

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 <[email protected]>

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,
>
>
>