[Freedreno] [PATCH 01/13] drm/msm: Take the mutex before calling msm_gem_new_impl

Rob Clark robdclark at gmail.com
Mon May 8 20:39:46 UTC 2017


On Mon, May 8, 2017 at 4:34 PM, Jordan Crouse <jcrouse at codeaurora.org> wrote:
> Amongst its other duties, msm_gem_new_impl adds the newly created
> GEM object to the shared inactive list which may also be actively
> modifiying the list during submission.  All the paths to modify
> the list are protected by the mutex except for the one through
> msm_gem_import which can end up causing list corruption.

hmm, I guess it would be a good idea to also throw one of these into
msm_gem_new_impl():

    WARN_ON(!mutex_is_locked(&dev->struct_mutex));

BR,
-R

> Signed-off-by: Jordan Crouse <jcrouse at codeaurora.org>
> ---
>  drivers/gpu/drm/msm/msm_gem.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
> index 68e509b..7a82eaa 100644
> --- a/drivers/gpu/drm/msm/msm_gem.c
> +++ b/drivers/gpu/drm/msm/msm_gem.c
> @@ -853,7 +853,11 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
>
>         size = PAGE_ALIGN(dmabuf->size);
>
> +       /* Take mutex so we can modify the inactive list in msm_gem_new_impl */
> +       mutex_lock(&dev->struct_mutex);
>         ret = msm_gem_new_impl(dev, size, MSM_BO_WC, dmabuf->resv, &obj);
> +       mutex_unlock(&dev->struct_mutex);
> +
>         if (ret)
>                 goto fail;
>
> --
> 1.9.1
>
> _______________________________________________
> Freedreno mailing list
> Freedreno at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/freedreno


More information about the Freedreno mailing list