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: 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>
This commit is contained in:
parent
4d5d72b7f1
commit
69ae561f45
|
@ -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)
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue