Jesper Juhl | 22 Jun 2012 00:13
Favicon
Gravatar

[PATCH] mgag200: Fix a memory leak in mgag200fb_create()

First we allocate memory for 'sysram' with vmalloc() and subsequently
we allocate for 'info' with framebuffer_alloc(). If the second
allocation fails we return -ENOMEM, but neglect to vfree() the memory
we previously allocated for 'sysram', thus leaking it.

Signed-off-by: Jesper Juhl <jj <at> chaosbits.net>
---
 drivers/gpu/drm/mgag200/mgag200_fb.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c
index 880d336..3c837e5 100644
--- a/drivers/gpu/drm/mgag200/mgag200_fb.c
+++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
 <at>  <at>  -156,8 +156,10  <at>  <at>  static int mgag200fb_create(struct mga_fbdev *mfbdev,
 		return -ENOMEM;

 	info = framebuffer_alloc(0, device);
-	if (info == NULL)
+	if (info == NULL) {
+		vfree(sysram);
 		return -ENOMEM;
+	}

 	info->par = mfbdev;

-- 
1.7.11

--

-- 
(Continue reading)

devendra.aaru | 22 Jun 2012 10:00
Picon

Re: [PATCH] mgag200: Fix a memory leak in mgag200fb_create()

On Fri, Jun 22, 2012 at 3:43 AM, Jesper Juhl <jj <at> chaosbits.net> wrote:
> First we allocate memory for 'sysram' with vmalloc() and subsequently
> we allocate for 'info' with framebuffer_alloc(). If the second
> allocation fails we return -ENOMEM, but neglect to vfree() the memory
> we previously allocated for 'sysram', thus leaking it.
>
Hi Jesper,

> Signed-off-by: Jesper Juhl <jj <at> chaosbits.net>
> ---
>  drivers/gpu/drm/mgag200/mgag200_fb.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c
> index 880d336..3c837e5 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_fb.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
>  <at>  <at>  -156,8 +156,10  <at>  <at>  static int mgag200fb_create(struct mga_fbdev *mfbdev,
>                return -ENOMEM;
>
>        info = framebuffer_alloc(0, device);
> -       if (info == NULL)
> +       if (info == NULL) {
> +               vfree(sysram);
>                return -ENOMEM;
> +       }
>
>        info->par = mfbdev;
>
This looks ok. but what about the error path?
(Continue reading)

Jesper Juhl | 24 Jun 2012 20:28
Favicon
Gravatar

Re: [PATCH] mgag200: Fix a memory leak in mgag200fb_create()

On Fri, 22 Jun 2012, devendra.aaru wrote:

> On Fri, Jun 22, 2012 at 3:43 AM, Jesper Juhl <jj <at> chaosbits.net> wrote:
> > First we allocate memory for 'sysram' with vmalloc() and subsequently
> > we allocate for 'info' with framebuffer_alloc(). If the second
> > allocation fails we return -ENOMEM, but neglect to vfree() the memory
> > we previously allocated for 'sysram', thus leaking it.
> >
> Hi Jesper,
> 
> > Signed-off-by: Jesper Juhl <jj <at> chaosbits.net>
> > ---
> >  drivers/gpu/drm/mgag200/mgag200_fb.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c
> > index 880d336..3c837e5 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_fb.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
> >  <at>  <at>  -156,8 +156,10  <at>  <at>  static int mgag200fb_create(struct mga_fbdev *mfbdev,
> >                return -ENOMEM;
> >
> >        info = framebuffer_alloc(0, device);
> > -       if (info == NULL)
> > +       if (info == NULL) {
> > +               vfree(sysram);
> >                return -ENOMEM;
> > +       }
> >
> >        info->par = mfbdev;
(Continue reading)


Gmane