Skip to content

Commit

Permalink
drm/i915: Don't leak primary/cursor planes on crtc init failure
Browse files Browse the repository at this point in the history
Call intel_plane_destroy() instead of drm_plane_cleanup() so that we
also free the plane struct itself when bailing out of the crtc init.

And make intel_plane_destroy() NULL tolerant to avoid having to check
for it in the caller.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1464371966-15190-5-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
  • Loading branch information
vsyrjala committed May 30, 2016
1 parent 4d5d72b commit 69ae561
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions drivers/gpu/drm/i915/intel_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -14157,9 +14157,11 @@ static void intel_finish_crtc_commit(struct drm_crtc *crtc,
*/
void intel_plane_destroy(struct drm_plane *plane)
{
struct intel_plane *intel_plane = to_intel_plane(plane);
if (!plane)
return;

drm_plane_cleanup(plane);
kfree(intel_plane);
kfree(to_intel_plane(plane));
}

const struct drm_plane_funcs intel_plane_funcs = {
Expand Down Expand Up @@ -14512,10 +14514,8 @@ static void intel_crtc_init(struct drm_device *dev, int pipe)
return;

fail:
if (primary)
drm_plane_cleanup(primary);
if (cursor)
drm_plane_cleanup(cursor);
intel_plane_destroy(primary);
intel_plane_destroy(cursor);
kfree(crtc_state);
kfree(intel_crtc);
}
Expand Down

0 comments on commit 69ae561

Please sign in to comment.