From: "Peter Hüwe" <PeterHuewe@gmx.de>
To: Andre Bartke <andre.bartke@googlemail.com>
Cc: devel@linuxdriverproject.org, mchehab@redhat.com,
devel@driverdev.osuosl.org, Andre Bartke <andre.bartke@gmail.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] staging: altera-stapl: Fix memory leak of altera_init()
Date: Tue, 31 May 2011 01:11:17 +0200 [thread overview]
Message-ID: <201105310111.18056.PeterHuewe@gmx.de> (raw)
In-Reply-To: <1306788304-21794-1-git-send-email-andre.bartke@gmail.com>
Am Montag 30 Mai 2011, 22:45:04 schrieb Andre Bartke:
> In case kzalloc() fails the second or third time
> we should free the previous allocated resources.
Good catch!
Personally I prefer putting the cleanup logic to the bottom, maybe like this - but that's just personal preference.
>From 1a13a1d7a2bad26f050ecc342741b6c07cac2b8a Mon Sep 17 00:00:00 2001
From: Peter Huewe <peterhuewe@gmx.de>
Date: Tue, 31 May 2011 00:54:27 +0200
Subject: [PATCH] staging: altera-stapl: Fix memory leak of altera_init()
In case kzalloc() fails the second or third time
we should free the previous allocated resources.
In order to keep one return point and to keep the cleanup code to one
place, some reordering was necessary.
Also while at it, removed the *sizeof(char) - to quote Linus:
"" Also removed the silly "* sizeof(u8)". If that isn't 1, we have way
deeper problems than a simple multiplication can fix. """
Reported-by: Andre Bartke <andre.bartke@gmail.com>
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/altera-stapl/altera.c | 33 +++++++++++++++++++++------------
1 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/drivers/staging/altera-stapl/altera.c b/drivers/staging/altera-stapl/altera.c
index 05aad35..09392ce 100644
--- a/drivers/staging/altera-stapl/altera.c
+++ b/drivers/staging/altera-stapl/altera.c
@@ -2430,16 +2430,23 @@ int altera_init(struct altera_config *config, const struct firmware *fw)
int index = 0;
s32 offset = 0L;
s32 error_address = 0L;
+ int retval = 0;
- key = kzalloc(33 * sizeof(char), GFP_KERNEL);
- if (!key)
- return -ENOMEM;
- value = kzalloc(257 * sizeof(char), GFP_KERNEL);
- if (!value)
- return -ENOMEM;
+ key = kzalloc(33, GFP_KERNEL);
+ if (!key) {
+ retval = -ENOMEM;
+ goto out;
+ }
+ value = kzalloc(257, GFP_KERNEL);
+ if (!value) {
+ retval = -ENOMEM;
+ goto free_key;
+ }
astate = kzalloc(sizeof(struct altera_state), GFP_KERNEL);
- if (!astate)
- return -ENOMEM;
+ if (!astate) {
+ retval = -ENOMEM;
+ goto free_value;
+ }
astate->config = config;
if (!astate->config->jtag_io) {
@@ -2518,10 +2525,12 @@ int altera_init(struct altera_config *config, const struct firmware *fw)
} else if (exec_result)
printk(KERN_ERR "%s: error %d\n", __func__, exec_result);
- kfree(key);
- kfree(value);
kfree(astate);
-
- return 0;
+free_value:
+ kfree(value);
+free_key:
+ kfree(key);
+out:
+ return retval;
}
EXPORT_SYMBOL(altera_init);
--
1.7.3.4
next prev parent reply other threads:[~2011-05-30 23:11 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-30 20:45 [PATCH] staging: altera-stapl: Fix memory leak of altera_init() Andre Bartke
2011-05-30 23:11 ` Peter Hüwe [this message]
2011-05-30 23:13 ` Jesper Juhl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201105310111.18056.PeterHuewe@gmx.de \
--to=peterhuewe@gmx.de \
--cc=andre.bartke@gmail.com \
--cc=andre.bartke@googlemail.com \
--cc=devel@driverdev.osuosl.org \
--cc=devel@linuxdriverproject.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mchehab@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox