[Nouveau] [PATCH 2/2] pm: fix a potential race condition when creating an engine context

Samuel Pitoiset samuel.pitoiset at gmail.com
Sun May 10 10:16:02 PDT 2015


* bump *

Ben, could you take a look at the series ?

On 04/14/2015 10:43 PM, Samuel Pitoiset wrote:
> 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: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> Signed-off-by: Martin Peres <martin.peres at free.fr>
> ---
>   drm/nouveau/nvkm/engine/pm/base.c | 7 +++----
>   1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drm/nouveau/nvkm/engine/pm/base.c b/drm/nouveau/nvkm/engine/pm/base.c
> index 274457c..4cf36a3 100644
> --- a/drm/nouveau/nvkm/engine/pm/base.c
> +++ b/drm/nouveau/nvkm/engine/pm/base.c
> @@ -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



More information about the Nouveau mailing list