On Wed, Sep 17, 2014 at 6:41 PM, Daniel Drake drake@endlessm.com wrote:
- drm_mode_rmfb then calls drm_framebuffer_remove, which calls
drm_mode_set_config_internal() in order to turn off the CRTC, dropping another reference in the process. if (tmp->old_fb) drm_framebuffer_unreference(tmp->old_fb);
- drm_framebuffer_remove calls drm_plane_force_disable() which drops
another reference: /* disconnect the plane from the fb and crtc: */ __drm_framebuffer_unreference(old_fb);
If 3. here is about the primary plane then this won't happen, since the primary plane pointer&reference has already been cleared in step 2.
And even if their would be a bug in here, you _certainly_ should not try to paper over this in your driver, but instead fix up the refcounting done in the drm core. -Daniel