drm/nouveau/gr/gf100-: unlock mutex failing to create golden context

Message ID 20231103024119.15031-1-dakr@redhat.com
State New
Headers
Series drm/nouveau/gr/gf100-: unlock mutex failing to create golden context |

Commit Message

Danilo Krummrich Nov. 3, 2023, 2:41 a.m. UTC
  Do not return from gf100_gr_chan_new() with fecs mutex held when failing
to create the golden context image.

Cc: <stable@vger.kernel.org> # v6.2+
Fixes: ca081fff6ecc ("drm/nouveau/gr/gf100-: generate golden context during first object alloc")
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Dave Airlie Nov. 3, 2023, 3:28 a.m. UTC | #1
On Fri, 3 Nov 2023 at 12:41, Danilo Krummrich <dakr@redhat.com> wrote:
>
> Do not return from gf100_gr_chan_new() with fecs mutex held when failing
> to create the golden context image.

Reviewed-by: Dave Airlie <airlied@redhat.com>
>
> Cc: <stable@vger.kernel.org> # v6.2+
> Fixes: ca081fff6ecc ("drm/nouveau/gr/gf100-: generate golden context during first object alloc")
> Signed-off-by: Danilo Krummrich <dakr@redhat.com>
> ---
>  drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
> index c494a1ff2d57..f72d3aa33442 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
> @@ -442,6 +442,7 @@ gf100_gr_chan_new(struct nvkm_gr *base, struct nvkm_chan *fifoch,
>         if (gr->data == NULL) {
>                 ret = gf100_grctx_generate(gr, chan, fifoch->inst);
>                 if (ret) {
> +                       mutex_unlock(&gr->fecs.mutex);
>                         nvkm_error(&base->engine.subdev, "failed to construct context\n");
>                         return ret;
>                 }
> --
> 2.41.0
>
  

Patch

diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
index c494a1ff2d57..f72d3aa33442 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
@@ -442,6 +442,7 @@  gf100_gr_chan_new(struct nvkm_gr *base, struct nvkm_chan *fifoch,
 	if (gr->data == NULL) {
 		ret = gf100_grctx_generate(gr, chan, fifoch->inst);
 		if (ret) {
+			mutex_unlock(&gr->fecs.mutex);
 			nvkm_error(&base->engine.subdev, "failed to construct context\n");
 			return ret;
 		}