aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/omap_fb.c
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2014-09-25 15:24:27 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2015-03-24 07:50:54 -0400
commit925e4940489a792b4aaf601c22c1943fbd9fd558 (patch)
tree0ab13e08156788dccdb25d80c9921045d57a40d2 /drivers/gpu/drm/omapdrm/omap_fb.c
parentc7c1aecd8e490c3818eaaea33e3c0d372931350a (diff)
drm/omap: fix error handling in omap_framebuffer_create()
When an error happens in omap_framebuffer_create(), omap_framebuffer_create() calls omap_framebuffer_destroy() if the fb struct has been allocated. However, that crashes, as omap_framebuffer_destroy(), which calls drm_framebuffer_cleanup(), should only be called after drm_framebuffer_init() Fix this by just calling kfree() for the allocated fb when an error happens. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_fb.c')
-rw-r--r--drivers/gpu/drm/omapdrm/omap_fb.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_fb.c b/drivers/gpu/drm/omapdrm/omap_fb.c
index d1e5f6da30d4..3c6488e89788 100644
--- a/drivers/gpu/drm/omapdrm/omap_fb.c
+++ b/drivers/gpu/drm/omapdrm/omap_fb.c
@@ -380,7 +380,7 @@ struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
380struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, 380struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
381 struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos) 381 struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos)
382{ 382{
383 struct omap_framebuffer *omap_fb; 383 struct omap_framebuffer *omap_fb = NULL;
384 struct drm_framebuffer *fb = NULL; 384 struct drm_framebuffer *fb = NULL;
385 const struct format *format = NULL; 385 const struct format *format = NULL;
386 int ret, i, n = drm_format_num_planes(mode_cmd->pixel_format); 386 int ret, i, n = drm_format_num_planes(mode_cmd->pixel_format);
@@ -451,8 +451,7 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
451 return fb; 451 return fb;
452 452
453fail: 453fail:
454 if (fb) 454 kfree(omap_fb);
455 omap_framebuffer_destroy(fb);
456 455
457 return ERR_PTR(ret); 456 return ERR_PTR(ret);
458} 457}