drm/armada: fix page_flip refcounting leak
authorRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 11 Oct 2014 22:53:35 +0000 (23:53 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 17 Oct 2014 15:59:07 +0000 (16:59 +0100)
commitc5488307dd679ea3fc23fec77dbf27191c2becda
tree2a0aa3513a08208c93decc6440322dcd48401ec0
parent0544e38d5ae90676624350468dea88c93eaeacbf
drm/armada: fix page_flip refcounting leak

A refcounting leak was found of the original frame buffer attached to
the CRTC when using the page_flip ioctl, resulting in the frame buffer
never being freed.

This was not obvious initially, as if the page flip subsequently
re-attaches the original frame buffer, the refcounts will be balanced.
However, if the original frame buffer is freed, then it will be leaked.

Fix this by ensuring that we take a reference on the incoming fb, but
rely on the queued work to drop that ref count.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/gpu/drm/armada/armada_crtc.c