Commit 3693d544 authored by Samuel Pitoiset's avatar Samuel Pitoiset Committed by Ben Skeggs

drm/nouveau/pm: prevent freeing the wrong engine context

This fixes a crash when multiple PM engine contexts are created.
Signed-off-by: default avatarSamuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: default avatarMartin Peres <martin.peres@free.fr>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 4a8cf451
...@@ -332,9 +332,12 @@ static void ...@@ -332,9 +332,12 @@ static void
nvkm_perfctx_dtor(struct nvkm_object *object) nvkm_perfctx_dtor(struct nvkm_object *object)
{ {
struct nvkm_pm *ppm = (void *)object->engine; struct nvkm_pm *ppm = (void *)object->engine;
struct nvkm_perfctx *ctx = (void *)object;
mutex_lock(&nv_subdev(ppm)->mutex); mutex_lock(&nv_subdev(ppm)->mutex);
nvkm_engctx_destroy(&ppm->context->base); nvkm_engctx_destroy(&ctx->base);
ppm->context = NULL; if (ppm->context == ctx)
ppm->context = NULL;
mutex_unlock(&nv_subdev(ppm)->mutex); mutex_unlock(&nv_subdev(ppm)->mutex);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment