[PATCH 1/5] drm/armada: fix leak of crtc structure
Russell King
rmk+kernel at armlinux.org.uk
Wed Nov 29 11:45:43 UTC 2017
Fix the leak of the CRTC structure in the failure paths of
armada_drm_crtc_create().
Signed-off-by: Russell King <rmk+kernel at armlinux.org.uk>
---
drivers/gpu/drm/armada/armada_crtc.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
index 2e065facdce7..844d488b6654 100644
--- a/drivers/gpu/drm/armada/armada_crtc.c
+++ b/drivers/gpu/drm/armada/armada_crtc.c
@@ -1246,11 +1246,14 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
dcrtc->crtc.port = port;
primary = kzalloc(sizeof(*primary), GFP_KERNEL);
- if (!primary)
+ if (!primary) {
+ kfree(dcrtc);
return -ENOMEM;
+ }
ret = armada_drm_plane_init(primary);
if (ret) {
+ kfree(dcrtc);
kfree(primary);
return ret;
}
@@ -1262,14 +1265,17 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
NULL,
DRM_PLANE_TYPE_PRIMARY, NULL);
if (ret) {
+ kfree(dcrtc);
kfree(primary);
return ret;
}
ret = drm_crtc_init_with_planes(drm, &dcrtc->crtc, &primary->base, NULL,
&armada_crtc_funcs, NULL);
- if (ret)
+ if (ret) {
+ kfree(dcrtc);
goto err_crtc_init;
+ }
drm_crtc_helper_add(&dcrtc->crtc, &armada_crtc_helper_funcs);
--
2.7.4
More information about the dri-devel
mailing list