[PATCH 4/4] drm: fix fb refcount issue with atomic modesetting
Daniel Vetter
daniel at ffwll.ch
Tue May 31 10:56:23 UTC 2016
On Tue, May 31, 2016 at 12:17:23PM +0300, Tomi Valkeinen wrote:
> After commit 027b3f8ba9277410c3191d72d1ed2c6146d8a668 ("drm/modes: stop
> handling framebuffer special") extra fb refs are left around when doing
> atomic modesetting.
>
> The problem is that the new drm_property_change_valid_get() does not
> return anything in the '**ref' parameter, which causes
> 'drm_property_change_valid_put' never to be called.
>
> For some reason this doesn't cause problems with legacy API.
>
> Also, previously the code only set the 'ref' variable for fbs, with this
> patch the 'ref' is set for all objects.
>
> So this is a bit of an RFC, as I don't understand all what's going on
> here.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
On patches 1,2&4:
Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
Imo everything but the sti patche should also grow a cc: stable, plus an
appropriate Fixes: line for this one here.
-Daniel
> ---
> drivers/gpu/drm/drm_crtc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 06b6e2173697..0e3cc66aa8b7 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -4839,7 +4839,8 @@ bool drm_property_change_valid_get(struct drm_property *property,
> if (value == 0)
> return true;
>
> - return _object_find(property->dev, value, property->values[0]) != NULL;
> + *ref = _object_find(property->dev, value, property->values[0]);
> + return *ref != NULL;
> }
>
> for (i = 0; i < property->num_values; i++)
> --
> 2.5.0
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the dri-devel
mailing list