From: Maxime Ripard <maxime.ripard@free-electrons.com>
To: "Victor N. Ramos Mello" <victornrm@gmail.com>
Cc: "Mike Turquette" <mturquette@linaro.org>,
"Emilio López" <emilio@elopez.com.ar>,
"Gregory CLEMENT" <gregory.clement@free-electrons.com>,
"Stephen Boyd" <sboyd@codeaurora.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/1] drivers: clk: sunxi: Fix memory leakage in clk-sunxi.c
Date: Mon, 14 Oct 2013 21:32:01 +0200 [thread overview]
Message-ID: <20131014193201.GT3041@lukather> (raw)
In-Reply-To: <1381615554-4167-1-git-send-email-victornrm@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2103 bytes --]
Hi Victor,
On Sat, Oct 12, 2013 at 07:05:54PM -0300, Victor N. Ramos Mello wrote:
> From: "Victor N. Ramos Mello" <victornrm@gmail.com>
>
> Fix a possible memory leak in sun4i_osc_clk_setup().
> Moved clock-frequency check to save superfluous allocation.
>
> Signed-off-by: Victor N. Ramos Mello <victornrm@gmail.com>
> ---
> drivers/clk/sunxi/clk-sunxi.c | 16 +++++++++-------
> 1 files changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
> index 34ee69f..a741770 100644
> --- a/drivers/clk/sunxi/clk-sunxi.c
> +++ b/drivers/clk/sunxi/clk-sunxi.c
> @@ -38,18 +38,16 @@ static void __init sun4i_osc_clk_setup(struct device_node *node)
> const char *clk_name = node->name;
> u32 rate;
>
> + if (of_property_read_u32(node, "clock-frequency", &rate))
> + return;
> +
> /* allocate fixed-rate and gate clock structs */
> fixed = kzalloc(sizeof(struct clk_fixed_rate), GFP_KERNEL);
> if (!fixed)
> return;
> gate = kzalloc(sizeof(struct clk_gate), GFP_KERNEL);
> - if (!gate) {
> - kfree(fixed);
> - return;
> - }
> -
> - if (of_property_read_u32(node, "clock-frequency", &rate))
> - return;
> + if (!gate)
> + goto err_gate;
>
> /* set up gate and fixed rate properties */
> gate->reg = of_iomap(node, 0);
> @@ -67,7 +65,11 @@ static void __init sun4i_osc_clk_setup(struct device_node *node)
> if (!IS_ERR(clk)) {
> of_clk_add_provider(node, of_clk_src_simple_get, clk);
> clk_register_clkdev(clk, clk_name, NULL);
> + return;
> }
> + kfree(gate);
> +err_gate:
> + kfree(fixed);
While the patch is appreciated, I find the logic here a bit backward
compared to what's usually done.
I'd rather see here something like
if (IS_ERR(clk))
goto err_gate;
of_clk_add_provider(...);
clk_register_clkdev(...);
return;
err_gate:
kfree(gate);
err_fixed:
kfree(fixed);
But maybe it's just me.
Thanks!
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
prev parent reply other threads:[~2013-10-14 20:50 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-12 22:05 [PATCH 1/1] drivers: clk: sunxi: Fix memory leakage in clk-sunxi.c Victor N. Ramos Mello
2013-10-14 19:32 ` Maxime Ripard [this message]
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=20131014193201.GT3041@lukather \
--to=maxime.ripard@free-electrons.com \
--cc=emilio@elopez.com.ar \
--cc=gregory.clement@free-electrons.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=sboyd@codeaurora.org \
--cc=victornrm@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.