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) | ||||
| { | ||||
| 	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 = { | ||||
| @ -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); | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user