2012-06-26 22:55:40

by Jesper Juhl

[permalink] [raw]
Subject: [PATCH] drm/i915/sprite: Fix mem leak in intel_plane_init()

If we ever hit the default case in the switch statement we'll return
from the function without freeing the memory we just allocated to
'intel_plane' (but that has not been used).

This patch gets rid of the leak by freeing the memory just before we
return.

Signed-off-by: Jesper Juhl <[email protected]>
---
drivers/gpu/drm/i915/intel_sprite.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 2a20fb0..c8851ba 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -685,6 +685,7 @@ intel_plane_init(struct drm_device *dev, enum pipe pipe)
break;

default:
+ kfree(intel_plane);
return -ENODEV;
}

@@ -699,4 +700,3 @@ intel_plane_init(struct drm_device *dev, enum pipe pipe)

return ret;
}
-
--
1.7.11.1


--
Jesper Juhl <[email protected]> http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.


2012-06-27 00:12:49

by Jesse Barnes

[permalink] [raw]
Subject: Re: [PATCH] drm/i915/sprite: Fix mem leak in intel_plane_init()

On Wed, 27 Jun 2012 00:55:37 +0200 (CEST)
Jesper Juhl <[email protected]> wrote:

> If we ever hit the default case in the switch statement we'll return
> from the function without freeing the memory we just allocated to
> 'intel_plane' (but that has not been used).
>
> This patch gets rid of the leak by freeing the memory just before we
> return.
>
> Signed-off-by: Jesper Juhl <[email protected]>
> ---
> drivers/gpu/drm/i915/intel_sprite.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index 2a20fb0..c8851ba 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -685,6 +685,7 @@ intel_plane_init(struct drm_device *dev, enum pipe pipe)
> break;
>
> default:
> + kfree(intel_plane);
> return -ENODEV;
> }
>
> @@ -699,4 +700,3 @@ intel_plane_init(struct drm_device *dev, enum pipe pipe)
>
> return ret;
> }

Yeah, looks fine. I just fixed the same thing in a local tree (though
by using a goto since I added another path that could fail).

Reviewed-by: Jesse Barnes <[email protected]>

--
Jesse Barnes, Intel Open Source Technology Center

2012-06-27 08:35:45

by Chris Wilson

[permalink] [raw]
Subject: Re: [PATCH] drm/i915/sprite: Fix mem leak in intel_plane_init()

On Wed, 27 Jun 2012 00:55:37 +0200 (CEST), Jesper Juhl <[email protected]> wrote:
> If we ever hit the default case in the switch statement we'll return
> from the function without freeing the memory we just allocated to
> 'intel_plane' (but that has not been used).
>
> This patch gets rid of the leak by freeing the memory just before we
> return.

Heh, I was more worried about the real leak of the planes on module
unload.
-Chris

--
Chris Wilson, Intel Open Source Technology Centre

2012-06-27 11:36:15

by Daniel Vetter

[permalink] [raw]
Subject: Re: [PATCH] drm/i915/sprite: Fix mem leak in intel_plane_init()

On Tue, Jun 26, 2012 at 05:12:46PM -0700, Jesse Barnes wrote:
> On Wed, 27 Jun 2012 00:55:37 +0200 (CEST)
> Jesper Juhl <[email protected]> wrote:
>
> > If we ever hit the default case in the switch statement we'll return
> > from the function without freeing the memory we just allocated to
> > 'intel_plane' (but that has not been used).
> >
> > This patch gets rid of the leak by freeing the memory just before we
> > return.
> >
> > Signed-off-by: Jesper Juhl <[email protected]>
> > ---
> > drivers/gpu/drm/i915/intel_sprite.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> > index 2a20fb0..c8851ba 100644
> > --- a/drivers/gpu/drm/i915/intel_sprite.c
> > +++ b/drivers/gpu/drm/i915/intel_sprite.c
> > @@ -685,6 +685,7 @@ intel_plane_init(struct drm_device *dev, enum pipe pipe)
> > break;
> >
> > default:
> > + kfree(intel_plane);
> > return -ENODEV;
> > }
> >
> > @@ -699,4 +700,3 @@ intel_plane_init(struct drm_device *dev, enum pipe pipe)
> >
> > return ret;
> > }
>
> Yeah, looks fine. I just fixed the same thing in a local tree (though
> by using a goto since I added another path that could fail).
>
> Reviewed-by: Jesse Barnes <[email protected]>
Queued for -next, thanks for the patch.
-Daniel
--
Daniel Vetter
Mail: [email protected]
Mobile: +41 (0)79 365 57 48