[patch] drm/tegra: small leak on error in tegra_fb_alloc()
Dan Carpenter
dan.carpenter at oracle.com
Sat Nov 9 21:34:06 PST 2013
If we don't have enough memory for ->planes then we leak "fb".
Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c
index 490f771..1362d78 100644
--- a/drivers/gpu/drm/tegra/fb.c
+++ b/drivers/gpu/drm/tegra/fb.c
@@ -98,8 +98,10 @@ static struct tegra_fb *tegra_fb_alloc(struct drm_device *drm,
return ERR_PTR(-ENOMEM);
fb->planes = kzalloc(num_planes * sizeof(*planes), GFP_KERNEL);
- if (!fb->planes)
- return ERR_PTR(-ENOMEM);
+ if (!fb->planes) {
+ err = -ENOMEM;
+ goto free_fb;
+ }
fb->num_planes = num_planes;
@@ -112,12 +114,17 @@ static struct tegra_fb *tegra_fb_alloc(struct drm_device *drm,
if (err < 0) {
dev_err(drm->dev, "failed to initialize framebuffer: %d\n",
err);
- kfree(fb->planes);
- kfree(fb);
- return ERR_PTR(err);
+ goto free_planes;
}
return fb;
+
+free_planes:
+ kfree(fb->planes);
+free_fb:
+ kfree(fb);
+
+ return ERR_PTR(err);
}
static struct drm_framebuffer *tegra_fb_create(struct drm_device *drm,
More information about the dri-devel
mailing list