2023-11-27 12:56:55

by Dan Carpenter

[permalink] [raw]
Subject: [PATCH] nouveau/gsp/r535: remove a stray unlock in r535_gsp_rpc_send()

This unlock doesn't belong here and it leads to a double unlock in
the caller, r535_gsp_rpc_push().

Fixes: 176fdcbddfd2 ("drm/nouveau/gsp/r535: add support for booting GSP-RM")
Signed-off-by: Dan Carpenter <[email protected]>
---
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
index dc44f5c7833f..818e5c73b7a6 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
@@ -365,10 +365,8 @@ r535_gsp_rpc_send(struct nvkm_gsp *gsp, void *argv, bool wait, u32 repc)
}

ret = r535_gsp_cmdq_push(gsp, rpc);
- if (ret) {
- mutex_unlock(&gsp->cmdq.mutex);
+ if (ret)
return ERR_PTR(ret);
- }

if (wait) {
msg = r535_gsp_msg_recv(gsp, fn, repc);
--
2.42.0


2023-11-27 20:06:45

by Timur Tabi

[permalink] [raw]
Subject: Re: [Nouveau] [PATCH] nouveau/gsp/r535: remove a stray unlock in r535_gsp_rpc_send()

On Mon, 2023-11-27 at 15:56 +0300, Dan Carpenter wrote:
> This unlock doesn't belong here and it leads to a double unlock in
> the caller, r535_gsp_rpc_push().
>
> Fixes: 176fdcbddfd2 ("drm/nouveau/gsp/r535: add support for booting GSP-
> RM")
> Signed-off-by: Dan Carpenter <[email protected]>

Nice catch!

Reviewed-by: Timur Tabi <[email protected]>

2023-11-29 02:12:39

by Danilo Krummrich

[permalink] [raw]
Subject: Re: [PATCH] nouveau/gsp/r535: remove a stray unlock in r535_gsp_rpc_send()

On 11/27/23 13:56, Dan Carpenter wrote:
> This unlock doesn't belong here and it leads to a double unlock in
> the caller, r535_gsp_rpc_push().
>
> Fixes: 176fdcbddfd2 ("drm/nouveau/gsp/r535: add support for booting GSP-RM")
> Signed-off-by: Dan Carpenter <[email protected]>

Good catch - applied to drm-misc-fixes.

- Danilo

> ---
> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
> index dc44f5c7833f..818e5c73b7a6 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
> @@ -365,10 +365,8 @@ r535_gsp_rpc_send(struct nvkm_gsp *gsp, void *argv, bool wait, u32 repc)
> }
>
> ret = r535_gsp_cmdq_push(gsp, rpc);
> - if (ret) {
> - mutex_unlock(&gsp->cmdq.mutex);
> + if (ret)
> return ERR_PTR(ret);
> - }
>
> if (wait) {
> msg = r535_gsp_msg_recv(gsp, fn, repc);