2017-04-12 00:31:27

by Wei Yongjun

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

From: Wei Yongjun <[email protected]>

Add the missing unlock before return from function etnaviv_gpu_submit()
in the error handling case.

Fixes: f3cd1b064f11 ("drm/etnaviv: (re-)protect fence allocation with
GPU mutex")
Signed-off-by: Wei Yongjun <[email protected]>
---
drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
index da48819..e4a4d4c 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
@@ -1317,7 +1317,7 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
if (!fence) {
event_free(gpu, event);
ret = -ENOMEM;
- goto out_pm_put;
+ goto out_unlok;
}

gpu->event[event].fence = fence;
@@ -1357,6 +1357,7 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
hangcheck_timer_reset(gpu);
ret = 0;

+out_unlok:
mutex_unlock(&gpu->lock);

out_pm_put:


2017-04-12 09:53:23

by Lucas Stach

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

Am Mittwoch, den 12.04.2017, 00:31 +0000 schrieb Wei Yongjun:
> From: Wei Yongjun <[email protected]>
>
> Add the missing unlock before return from function etnaviv_gpu_submit()
> in the error handling case.
>
> Fixes: f3cd1b064f11 ("drm/etnaviv: (re-)protect fence allocation with
> GPU mutex")
> Signed-off-by: Wei Yongjun <[email protected]>
> ---
> drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> index da48819..e4a4d4c 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> @@ -1317,7 +1317,7 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
> if (!fence) {
> event_free(gpu, event);
> ret = -ENOMEM;
> - goto out_pm_put;
> + goto out_unlok;

Label should probably be named "out_unlock". Fixed up while applying,
thanks.

Regards,
Lucas

> }
>
> gpu->event[event].fence = fence;
> @@ -1357,6 +1357,7 @@ int etnaviv_gpu_submit(struct etnaviv_gpu *gpu,
> hangcheck_timer_reset(gpu);
> ret = 0;
>
> +out_unlok:
> mutex_unlock(&gpu->lock);
>
> out_pm_put:
>