[Freedreno] [PATCH 1/2] drm/msm: dpu: Fix memory leak caused by dropped reference

Jeykumar Sankaran jsanka at codeaurora.org
Tue Oct 9 18:43:25 UTC 2018


On 2018-10-04 11:09, Sean Paul wrote:
> From: Sean Paul <seanpaul at chromium.org>
> 
> We are currently leaking a drm_crtc_commit struct for every atomic
> commit containing plane state. The dpu plane destroy function cleans up
dpu plane destroy -> dpu_plane_destroy_state
> the fb reference manually, but fails to release the commit ref. As a
> result, we just keep allocating drm_crtc_commits without ever freeing
> them. Fortunately there's a helper function which will clean up all of
> our mess at once, so use that.
> 
> Thanks to Doug Anderson for reporting the memory leak (and leaving
> breadcrumbs from kmemleak!).
> 
> Reported-by: Doug Anderson <dianders at chromium.org>
> Signed-off-by: Sean Paul <seanpaul at chromium.org>
> ---
With the nit addressed:

Reviewed-by: Jeykumar Sankaran <jsanka at codeaurora.org>

>  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> index fc59a69aa832..f549daf30fe6 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
> @@ -1203,9 +1203,7 @@ static void dpu_plane_destroy_state(struct 
> drm_plane
> *plane,
> 
>  	pstate = to_dpu_plane_state(state);
> 
> -	/* remove ref count for frame buffers */
> -	if (state->fb)
> -		drm_framebuffer_put(state->fb);
> +	__drm_atomic_helper_plane_destroy_state(state);
> 
>  	kfree(pstate);
>  }

-- 
Jeykumar S


More information about the Freedreno mailing list