Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 305c1959 authored by Samuel Pitoiset's avatar Samuel Pitoiset Committed by Ben Skeggs
Browse files

drm/nouveau/pm: fix a potential race condition when creating an engine context



There is always the possiblity that the ppm->context pointer would get
partially updated and accidentally would equal ctx. This would allow two
contexts to co-exist, which is not acceptable. Moving the test to the
critical section takes care of this problem.

Signed-off-by: default avatarSamuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: default avatarMartin Peres <martin.peres@free.fr>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 3693d544
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -358,12 +358,11 @@ nvkm_perfctx_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
	mutex_lock(&nv_subdev(ppm)->mutex);
	if (ppm->context == NULL)
		ppm->context = ctx;
	mutex_unlock(&nv_subdev(ppm)->mutex);

	if (ctx != ppm->context)
		return -EBUSY;
		ret = -EBUSY;
	mutex_unlock(&nv_subdev(ppm)->mutex);

	return 0;
	return ret;
}

struct nvkm_oclass