2012-08-07 18:16:58

by Jesper Juhl

[permalink] [raw]
Subject: [PATCH] Input: omap4-keypad - don't leak in omap4_keypad_probe()

If omap4_keypad_parse_dt() does not return 0 (zero) in
omap4_keypad_probe() we will leak the memory we allocated for
'keypad_data' with kzalloc() when we return and the variable goes out
of scope.
Fix the leak by jumping to the 'err_free_keypad' label where we
properly free the allocated memory, instead of returning directly.

Signed-off-by: Jesper Juhl <[email protected]>
---
drivers/input/keyboard/omap4-keypad.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Compile tested only.

diff --git a/drivers/input/keyboard/omap4-keypad.c b/drivers/input/keyboard/omap4-keypad.c
index c05f98c..9c2ac87 100644
--- a/drivers/input/keyboard/omap4-keypad.c
+++ b/drivers/input/keyboard/omap4-keypad.c
@@ -281,7 +281,7 @@ static int __devinit omap4_keypad_probe(struct platform_device *pdev)
} else {
error = omap4_keypad_parse_dt(&pdev->dev, keypad_data);
if (error)
- return error;
+ goto err_free_keypad;
}

res = request_mem_region(res->start, resource_size(res), pdev->name);
--
1.7.11.4


--
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-08-08 03:43:23

by Sachin Kamat

[permalink] [raw]
Subject: Re: [PATCH] Input: omap4-keypad - don't leak in omap4_keypad_probe()

On 7 August 2012 23:46, Jesper Juhl <[email protected]> wrote:
> If omap4_keypad_parse_dt() does not return 0 (zero) in
> omap4_keypad_probe() we will leak the memory we allocated for
> 'keypad_data' with kzalloc() when we return and the variable goes out
> of scope.

How about using devm_kzalloc() instead which will take care of freeing
the memory on detach?

> Fix the leak by jumping to the 'err_free_keypad' label where we
> properly free the allocated memory, instead of returning directly.
>
> Signed-off-by: Jesper Juhl <[email protected]>
> ---
> drivers/input/keyboard/omap4-keypad.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Compile tested only.
>
> diff --git a/drivers/input/keyboard/omap4-keypad.c b/drivers/input/keyboard/omap4-keypad.c
> index c05f98c..9c2ac87 100644
> --- a/drivers/input/keyboard/omap4-keypad.c
> +++ b/drivers/input/keyboard/omap4-keypad.c
> @@ -281,7 +281,7 @@ static int __devinit omap4_keypad_probe(struct platform_device *pdev)
> } else {
> error = omap4_keypad_parse_dt(&pdev->dev, keypad_data);
> if (error)
> - return error;
> + goto err_free_keypad;
> }
>
> res = request_mem_region(res->start, resource_size(res), pdev->name);
> --
> 1.7.11.4
>
>
> --
> 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.
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/



--
Regards,
Sachin

2012-08-08 19:36:57

by Jesper Juhl

[permalink] [raw]
Subject: Re: [PATCH] Input: omap4-keypad - don't leak in omap4_keypad_probe()

On Wed, 8 Aug 2012, Sachin Kamat wrote:

> On 7 August 2012 23:46, Jesper Juhl <[email protected]> wrote:
> > If omap4_keypad_parse_dt() does not return 0 (zero) in
> > omap4_keypad_probe() we will leak the memory we allocated for
> > 'keypad_data' with kzalloc() when we return and the variable goes out
> > of scope.
>
> How about using devm_kzalloc() instead which will take care of freeing
> the memory on detach?
>
Perhaps. I'm not (yet) familiar with how that function works, so I had
not considered it. I'll look into it.

--
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-08-08 19:46:48

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH] Input: omap4-keypad - don't leak in omap4_keypad_probe()

On Wednesday, August 08, 2012 09:36:51 PM Jesper Juhl wrote:
> On Wed, 8 Aug 2012, Sachin Kamat wrote:
> > On 7 August 2012 23:46, Jesper Juhl <[email protected]> wrote:
> > > If omap4_keypad_parse_dt() does not return 0 (zero) in
> > > omap4_keypad_probe() we will leak the memory we allocated for
> > > 'keypad_data' with kzalloc() when we return and the variable goes out
> > > of scope.
> >
> > How about using devm_kzalloc() instead which will take care of freeing
> > the memory on detach?
>
> Perhaps. I'm not (yet) familiar with how that function works, so I had
> not considered it. I'll look into it.

Actually please not yet - I guess at some point I'll have to add devm_*
variants for input_device_* operations but for now I prefer not to mix
the 2 styles of managing resources.

BTW, I think I need to redo a few patches so I plan on folding this fix
into the original change.

Thanks.

--
Dmitry

2012-08-08 19:57:13

by Jesper Juhl

[permalink] [raw]
Subject: Re: [PATCH] Input: omap4-keypad - don't leak in omap4_keypad_probe()

On Wed, 8 Aug 2012, Dmitry Torokhov wrote:

> On Wednesday, August 08, 2012 09:36:51 PM Jesper Juhl wrote:
> > On Wed, 8 Aug 2012, Sachin Kamat wrote:
> > > On 7 August 2012 23:46, Jesper Juhl <[email protected]> wrote:
> > > > If omap4_keypad_parse_dt() does not return 0 (zero) in
> > > > omap4_keypad_probe() we will leak the memory we allocated for
> > > > 'keypad_data' with kzalloc() when we return and the variable goes out
> > > > of scope.
> > >
> > > How about using devm_kzalloc() instead which will take care of freeing
> > > the memory on detach?
> >
> > Perhaps. I'm not (yet) familiar with how that function works, so I had
> > not considered it. I'll look into it.
>
> Actually please not yet - I guess at some point I'll have to add devm_*
> variants for input_device_* operations but for now I prefer not to mix
> the 2 styles of managing resources.
>
> BTW, I think I need to redo a few patches so I plan on folding this fix
> into the original change.
>
Ok. I'll just leave this alone for now then and let you do whatever you
feel is best :-) .

--
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.