Commit 69ae561f authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Don't leak primary/cursor planes on crtc init failure

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: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1464371966-15190-5-git-send-email-ville.syrjala@linux.intel.comReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent 4d5d72b7
...@@ -14157,9 +14157,11 @@ static void intel_finish_crtc_commit(struct drm_crtc *crtc, ...@@ -14157,9 +14157,11 @@ static void intel_finish_crtc_commit(struct drm_crtc *crtc,
*/ */
void intel_plane_destroy(struct drm_plane *plane) void intel_plane_destroy(struct drm_plane *plane)
{ {
struct intel_plane *intel_plane = to_intel_plane(plane); if (!plane)
return;
drm_plane_cleanup(plane); drm_plane_cleanup(plane);
kfree(intel_plane); kfree(to_intel_plane(plane));
} }
const struct drm_plane_funcs intel_plane_funcs = { const struct drm_plane_funcs intel_plane_funcs = {
...@@ -14512,10 +14514,8 @@ static void intel_crtc_init(struct drm_device *dev, int pipe) ...@@ -14512,10 +14514,8 @@ static void intel_crtc_init(struct drm_device *dev, int pipe)
return; return;
fail: fail:
if (primary) intel_plane_destroy(primary);
drm_plane_cleanup(primary); intel_plane_destroy(cursor);
if (cursor)
drm_plane_cleanup(cursor);
kfree(crtc_state); kfree(crtc_state);
kfree(intel_crtc); kfree(intel_crtc);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment