All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 2/2] drm/fb-helper: Fix fb refcounting in pan_display_atomic
Date: Fri, 16 Oct 2015 19:48:37 +0300	[thread overview]
Message-ID: <20151016164837.GW26517@intel.com> (raw)
In-Reply-To: <1445012594-25988-2-git-send-email-daniel.vetter@ffwll.ch>

On Fri, Oct 16, 2015 at 06:23:14PM +0200, Daniel Vetter wrote:
> In
> 
> commit bbb1e52402b2a288b09ae37e8182599931c7e9df
> Author: Rob Clark <robdclark@gmail.com>
> Date:   Tue Aug 25 15:35:58 2015 -0400
> 
>     drm/fb-helper: atomic restore_fbdev_mode()..
> 
> we've forgotten to do the plane->old_fb refcount dance for
> pan_display_atomic, which can result in refcount leaks if the current
> configuration is not from fbcon. Which apparently can happen when
> vt-switching - fbcon does a pan first before a set_par.
> 
> OCD-align function parameters while at it.
> 
> Cc: Rob Clark <robdclark@gmail.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@gmail.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92483
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>  drivers/gpu/drm/drm_fb_helper.c | 27 +++++++++++++++++++++++++--
>  1 file changed, 25 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index 0ac0fcc9b0d2..b2cf28dd90fe 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -1249,6 +1249,8 @@ retry:
>  
>  		mode_set = &fb_helper->crtc_info[i].mode_set;
>  
> +		mode_set->crtc->primary->old_fb = mode_set->crtc->primary->fb;
> +
>  		mode_set->x = var->xoffset;
>  		mode_set->y = var->yoffset;
>  
> @@ -1264,13 +1266,34 @@ retry:
>  	info->var.xoffset = var->xoffset;
>  	info->var.yoffset = var->yoffset;
>  
> -	return 0;
>  
>  fail:

Time to rename the label too?

> +	for(i = 0; i < fb_helper->crtc_count; i++) {
> +		struct drm_mode_set *mode_set;
> +		struct drm_plane *plane;
> +
> +		mode_set = &fb_helper->crtc_info[i].mode_set;
> +		plane = mode_set->crtc->primary;
> +
> +		if (ret == 0) {
> +			struct drm_framebuffer *new_fb = plane->state->fb;
> +
> +			if (new_fb)
> +				drm_framebuffer_reference(new_fb);
> +			plane->fb = new_fb;
> +			plane->crtc = plane->state->crtc;
> +
> +			if (plane->old_fb)
> +				drm_framebuffer_unreference(plane->old_fb);
> +		}
> +		plane->old_fb = NULL;
> +	}
> +
>  	if (ret == -EDEADLK)
>  		goto backoff;
>  
> -	drm_atomic_state_free(state);
> +	if (ret != 0)
> +		drm_atomic_state_free(state);
>  
>  	return ret;
>  
> -- 
> 2.5.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2015-10-16 16:48 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-16 16:23 [PATCH 1/2] drm/fb-helper: Set plane rotation directly Daniel Vetter
2015-10-16 16:23 ` [PATCH 2/2] drm/fb-helper: Fix fb refcounting in pan_display_atomic Daniel Vetter
2015-10-16 16:35   ` Rob Clark
2015-10-16 16:48     ` Rodrigo Vivi
2015-10-16 17:26       ` Daniel Vetter
2015-10-16 16:48   ` Ville Syrjälä [this message]
2015-10-16 17:12     ` [Intel-gfx] " Daniel Vetter
2015-10-16 17:11   ` [PATCH] " Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151016164837.GW26517@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.