• Laurent Pinchart's avatar
    drm: writeback: Fix leak of writeback job · e482ae9b
    Laurent Pinchart authored
    Writeback jobs are allocated when the WRITEBACK_FB_ID is set, and
    deleted when the jobs complete. This results in both a memory leak of
    the job and a leak of the framebuffer if the atomic commit returns
    before the job is queued for processing, for instance if the atomic
    check fails or if the commit runs in test-only mode.
    
    Fix this by implementing the drm_writeback_cleanup_job() function and
    calling it from __drm_atomic_helper_connector_destroy_state(). As
    writeback jobs are removed from the state when they're queued for
    processing, any job left in the state when the state gets destroyed
    needs to be cleaned up.
    
    The existing declaration of the drm_writeback_cleanup_job() function
    without an implementation hints that this problem was considered, but
    never addressed.
    Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Reviewed-by: default avatarBrian Starkey <brian.starkey@arm.com>
    Acked-by: default avatarLiviu Dudau <liviu.dudau@arm.com>
    e482ae9b
drm_atomic_state_helper.c 13.9 KB