On Mon, Jan 28, 2019 at 10:56:29AM -0500, Sasha Levin wrote:
> From: Sean Paul <seanp...@chromium.org>
> 
> [ Upstream commit c232e9f41b136c141df9938024e521191a7b910d ]
> 
> Instead of always re-initializing the variables we need to clean up on
> out, move the re-initialization into the branch that goes back to retry
> label.
> 
> This is a lateral move right now, but will allow us to pull out the
> modeset locking into common code. I kept this change separate to make
> things easier to review.
> 
> Changes in v2:
> - None
> 
> Reviewed-by: Daniel Vetter <dan...@ffwll.ch>
> Signed-off-by: Sean Paul <seanp...@chromium.org>
> Link: 
> https://patchwork.freedesktop.org/patch/msgid/20181129150423.239081-2-s...@poorly.run
> Signed-off-by: Sasha Levin <sas...@kernel.org>

This probably doesn't need to get pulled back to stable. It was a pre-cursor for
some new helper macros that also don't need to be pulled back.

(Same comment for the 4.20 version)

Sean

> ---
>  drivers/gpu/drm/drm_crtc.c | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 9cbe8f5c9aca..ed9d7fc4cb2c 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -567,9 +567,9 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
>       struct drm_mode_crtc *crtc_req = data;
>       struct drm_crtc *crtc;
>       struct drm_plane *plane;
> -     struct drm_connector **connector_set, *connector;
> -     struct drm_framebuffer *fb;
> -     struct drm_display_mode *mode;
> +     struct drm_connector **connector_set = NULL, *connector;
> +     struct drm_framebuffer *fb = NULL;
> +     struct drm_display_mode *mode = NULL;
>       struct drm_mode_set set;
>       uint32_t __user *set_connectors_ptr;
>       struct drm_modeset_acquire_ctx ctx;
> @@ -598,10 +598,6 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
>       mutex_lock(&crtc->dev->mode_config.mutex);
>       drm_modeset_acquire_init(&ctx, DRM_MODESET_ACQUIRE_INTERRUPTIBLE);
>  retry:
> -     connector_set = NULL;
> -     fb = NULL;
> -     mode = NULL;
> -
>       ret = drm_modeset_lock_all_ctx(crtc->dev, &ctx);
>       if (ret)
>               goto out;
> @@ -763,6 +759,12 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
>       }
>       kfree(connector_set);
>       drm_mode_destroy(dev, mode);
> +
> +     /* In case we need to retry... */
> +     connector_set = NULL;
> +     fb = NULL;
> +     mode = NULL;
> +
>       if (ret == -EDEADLK) {
>               ret = drm_modeset_backoff(&ctx);
>               if (!ret)
> -- 
> 2.19.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-de...@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Sean Paul, Software Engineer, Google / Chromium OS

Reply via email to