drm/i915: Use normal fb deref for the fbcon framebuffer

Now that it's a normally kmalloce buffer we can use the usual cleanup
paths. The upside here is that if we get the refcounting wrong will be
able to catch it, since the drm core will complain about leftover
framebuffers and kref about underflows.

v2: Kill intel_framebuffer_fini - no longer needed now that we
refcount all fbs properly and only confusing.

v3: We actually still need to call unregister_private to remove the fb
from the idr and drop the idr reference - the final unref doesn't do
that. So much for remembering my own fb liftime rules. Reported by
Imre Deak.

Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> (v2)
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
Daniel Vetter
2014-02-10 18:00:38 +01:00
parent a0bae57f5b
commit ef2d633e9b
3 changed files with 4 additions and 11 deletions

View File

@ -269,8 +269,7 @@ static void intel_fbdev_destroy(struct drm_device *dev,
drm_fb_helper_fini(&ifbdev->helper);
drm_framebuffer_unregister_private(&ifbdev->fb->base);
intel_framebuffer_fini(ifbdev->fb);
kfree(ifbdev->fb);
drm_framebuffer_unreference(&ifbdev->fb->base);
}
int intel_fbdev_init(struct drm_device *dev)