2014-02-08 05:02:34

by Chase Southwood

[permalink] [raw]
Subject: [PATCH] Staging: comedi: fix memory leak in comedi_bond.c

We allocate bdev and then krealloc the devs pointer in order to add bdev
at the end of the devpriv->devs array list. But if for some reason this
krealloc fails, we need to free bdev before returning an error otherwise
this memory is leaked.

Signed-off-by: Chase Southwood <[email protected]>
---
drivers/staging/comedi/drivers/comedi_bond.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/staging/comedi/drivers/comedi_bond.c b/drivers/staging/comedi/drivers/comedi_bond.c
index 51a59e5..406aedb 100644
--- a/drivers/staging/comedi/drivers/comedi_bond.c
+++ b/drivers/staging/comedi/drivers/comedi_bond.c
@@ -254,6 +254,7 @@ static int do_dev_config(struct comedi_device *dev, struct comedi_devconfig *it)
if (!devs) {
dev_err(dev->class_dev,
"Could not allocate memory. Out of memory?\n");
+ kfree(bdev);
return -ENOMEM;
}
devpriv->devs = devs;
--
1.8.5.3


2014-02-10 12:52:54

by Ian Abbott

[permalink] [raw]
Subject: Re: [PATCH] Staging: comedi: fix memory leak in comedi_bond.c

On 2014-02-08 05:02, Chase Southwood wrote:
> We allocate bdev and then krealloc the devs pointer in order to add bdev
> at the end of the devpriv->devs array list. But if for some reason this
> krealloc fails, we need to free bdev before returning an error otherwise
> this memory is leaked.
>
> Signed-off-by: Chase Southwood <[email protected]>
> ---
> drivers/staging/comedi/drivers/comedi_bond.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/staging/comedi/drivers/comedi_bond.c b/drivers/staging/comedi/drivers/comedi_bond.c
> index 51a59e5..406aedb 100644
> --- a/drivers/staging/comedi/drivers/comedi_bond.c
> +++ b/drivers/staging/comedi/drivers/comedi_bond.c
> @@ -254,6 +254,7 @@ static int do_dev_config(struct comedi_device *dev, struct comedi_devconfig *it)
> if (!devs) {
> dev_err(dev->class_dev,
> "Could not allocate memory. Out of memory?\n");
> + kfree(bdev);
> return -ENOMEM;
> }
> devpriv->devs = devs;
>

Acked-by: Ian Abbott <[email protected]>

--
-=( Ian Abbott @ MEV Ltd. E-mail: <[email protected]> )=-
-=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-