Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1220100

[PATCH] drm/mgag200: fix memory leak

From Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Newsgroups linux.kernel
Subject [PATCH] drm/mgag200: fix memory leak
Date 2015-09-07 14:00 +0200
Message-ID <q63fA-4Fg-7@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


If drm_fb_helper_alloc_fbi() fails then we were directly returning
without freeing sysram. Also if drm_fb_helper_alloc_fbi() succeeds but
mgag200_framebuffer_init() fails then we were not releasing sysram and
we were not releasing fbi helper also.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
---
 drivers/gpu/drm/mgag200/mgag200_fb.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c
index 87de15e..5fe476a 100644
--- a/drivers/gpu/drm/mgag200/mgag200_fb.c
+++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
@@ -189,14 +189,16 @@ static int mgag200fb_create(struct drm_fb_helper *helper,
 		return -ENOMEM;
 
 	info = drm_fb_helper_alloc_fbi(helper);
-	if (IS_ERR(info))
-		return PTR_ERR(info);
+	if (IS_ERR(info)) {
+		ret = PTR_ERR(info);
+		goto err_alloc_fbi;
+	}
 
 	info->par = mfbdev;
 
 	ret = mgag200_framebuffer_init(dev, &mfbdev->mfb, &mode_cmd, gobj);
 	if (ret)
-		return ret;
+		goto err_framebuffer_init;
 
 	mfbdev->sysram = sysram;
 	mfbdev->size = size;
@@ -226,6 +228,13 @@ static int mgag200fb_create(struct drm_fb_helper *helper,
 	DRM_DEBUG_KMS("allocated %dx%d\n",
 		      fb->width, fb->height);
 	return 0;
+
+err_framebuffer_init:
+	drm_fb_helper_release_fbi(helper);
+
+err_alloc_fbi:
+	vfree(sysram);
+	return ret;
 }
 
 static int mga_fbdev_destroy(struct drm_device *dev,
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH] drm/mgag200: fix memory leak Sudip Mukherjee <sudipm.mukherjee@gmail.com> - 2015-09-07 14:00 +0200
  Re: [PATCH] drm/mgag200: fix memory leak Ingo Molnar <mingo@kernel.org> - 2015-09-13 11:40 +0200
    Re: [PATCH] drm/mgag200: fix memory leak Dave Airlie <airlied@gmail.com> - 2015-09-14 12:10 +0200
      Re: [PATCH] drm/mgag200: fix memory leak Dave Airlie <airlied@gmail.com> - 2015-09-14 12:10 +0200
        Re: [PATCH] drm/mgag200: fix memory leak Sudip Mukherjee <sudipm.mukherjee@gmail.com> - 2015-09-14 12:40 +0200
        Re: [PATCH] drm/mgag200: fix memory leak Archit Taneja <architt@codeaurora.org> - 2015-09-14 17:30 +0200
          [PATCH] drm/mgag200: Fix calling drm_fb_helper_fini() twice Ingo Molnar <mingo@kernel.org> - 2015-09-16 11:50 +0200
            Re: [PATCH] drm/mgag200: Fix calling drm_fb_helper_fini() twice Archit Taneja <architt@codeaurora.org> - 2015-09-17 13:00 +0200
              Re: [PATCH] drm/mgag200: Fix calling drm_fb_helper_fini() twice Sudip Mukherjee <sudipm.mukherjee@gmail.com> - 2015-09-17 13:20 +0200

csiph-web