drm/fsl-dcu: avoid memory leak on errors
Improve error handling during CRTC initialization. Especially avoid memory leaks in the primary plane initialization error path. Signed-off-by: Stefan Agner <stefan@agner.ch>
This commit is contained in:
parent
e291d2985b
commit
72cc05a518
|
@ -143,10 +143,15 @@ int fsl_dcu_drm_crtc_create(struct fsl_dcu_drm_device *fsl_dev)
|
|||
int ret;
|
||||
|
||||
primary = fsl_dcu_drm_primary_create_plane(fsl_dev->drm);
|
||||
if (!primary)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = drm_crtc_init_with_planes(fsl_dev->drm, crtc, primary, NULL,
|
||||
&fsl_dcu_drm_crtc_funcs, NULL);
|
||||
if (ret < 0)
|
||||
if (ret) {
|
||||
primary->funcs->destroy(primary);
|
||||
return ret;
|
||||
}
|
||||
|
||||
drm_crtc_helper_add(crtc, &fsl_dcu_drm_crtc_helper_funcs);
|
||||
|
||||
|
|
|
@ -187,6 +187,7 @@ static const struct drm_plane_helper_funcs fsl_dcu_drm_plane_helper_funcs = {
|
|||
static void fsl_dcu_drm_plane_destroy(struct drm_plane *plane)
|
||||
{
|
||||
drm_plane_cleanup(plane);
|
||||
kfree(plane);
|
||||
}
|
||||
|
||||
static const struct drm_plane_funcs fsl_dcu_drm_plane_funcs = {
|
||||
|
|
Loading…
Reference in New Issue