* [PATCH v2 1/2] clk: renesas: fix a double free on error
@ 2021-06-17 14:14 Dan Carpenter
2021-06-17 14:15 ` [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL Dan Carpenter
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Dan Carpenter @ 2021-06-17 14:14 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Michael Turquette, Stephen Boyd, Lad Prabhakar, Biju Das,
linux-renesas-soc, linux-clk, kernel-janitors
The "pll_clk" and "clock" pointers are allocated with devm_kzalloc() so
freeing them with kfree() will lead to a double free. This would only
happen if probe failed, and the system is not bootable.
Fixes: ef3c613ccd68 ("clk: renesas: Add CPG core wrapper for RZ/G2L SoC")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
V2: Fix "pll_clk" as well.
drivers/clk/renesas/renesas-rzg2l-cpg.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/clk/renesas/renesas-rzg2l-cpg.c b/drivers/clk/renesas/renesas-rzg2l-cpg.c
index 5009b9e48b13..7ba36f19896f 100644
--- a/drivers/clk/renesas/renesas-rzg2l-cpg.c
+++ b/drivers/clk/renesas/renesas-rzg2l-cpg.c
@@ -199,11 +199,7 @@ rzg2l_cpg_pll_clk_register(const struct cpg_core_clk *core,
pll_clk->priv = priv;
pll_clk->type = core->type;
- clk = clk_register(NULL, &pll_clk->hw);
- if (IS_ERR(clk))
- kfree(pll_clk);
-
- return clk;
+ return clk_register(NULL, &pll_clk->hw);
}
static struct clk
@@ -473,7 +469,6 @@ rzg2l_cpg_register_mod_clk(const struct rzg2l_mod_clk *mod,
fail:
dev_err(dev, "Failed to register %s clock %s: %ld\n", "module",
mod->name, PTR_ERR(clk));
- kfree(clock);
}
#define rcdev_to_priv(x) container_of(x, struct rzg2l_cpg_priv, rcdev)
--
2.30.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL
2021-06-17 14:14 [PATCH v2 1/2] clk: renesas: fix a double free on error Dan Carpenter
@ 2021-06-17 14:15 ` Dan Carpenter
2021-06-17 14:40 ` Prabhakar Mahadev Lad
2021-06-18 11:21 ` Geert Uytterhoeven
2021-06-17 14:23 ` [PATCH v2 1/2] clk: renesas: fix a double free on error Prabhakar Mahadev Lad
2021-06-17 14:48 ` Geert Uytterhoeven
2 siblings, 2 replies; 6+ messages in thread
From: Dan Carpenter @ 2021-06-17 14:15 UTC (permalink / raw)
To: Geert Uytterhoeven, Lad Prabhakar
Cc: Michael Turquette, Stephen Boyd, linux-renesas-soc, linux-clk,
linux-kernel, kernel-janitors
These functions accidentally return both error pointers and NULL when
there is an error. It doesn't cause a problem but it is confusing and
seems unintentional.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
drivers/clk/renesas/renesas-rzg2l-cpg.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/clk/renesas/renesas-rzg2l-cpg.c b/drivers/clk/renesas/renesas-rzg2l-cpg.c
index 7ba36f19896f..83b58e1cb78f 100644
--- a/drivers/clk/renesas/renesas-rzg2l-cpg.c
+++ b/drivers/clk/renesas/renesas-rzg2l-cpg.c
@@ -124,7 +124,7 @@ rzg2l_cpg_div_clk_register(const struct cpg_core_clk *core,
core->flag, &priv->rmw_lock);
if (IS_ERR(clk_hw))
- return NULL;
+ return ERR_CAST(clk_hw);
return clk_hw->clk;
}
@@ -174,17 +174,14 @@ rzg2l_cpg_pll_clk_register(const struct cpg_core_clk *core,
struct clk_init_data init;
const char *parent_name;
struct pll_clk *pll_clk;
- struct clk *clk;
parent = clks[core->parent & 0xffff];
if (IS_ERR(parent))
return ERR_CAST(parent);
pll_clk = devm_kzalloc(dev, sizeof(*pll_clk), GFP_KERNEL);
- if (!pll_clk) {
- clk = ERR_PTR(-ENOMEM);
- return NULL;
- }
+ if (!pll_clk)
+ return ERR_PTR(-ENOMEM);
parent_name = __clk_get_name(parent);
init.name = core->name;
--
2.30.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* RE: [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL
2021-06-17 14:15 ` [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL Dan Carpenter
@ 2021-06-17 14:40 ` Prabhakar Mahadev Lad
2021-06-18 11:21 ` Geert Uytterhoeven
1 sibling, 0 replies; 6+ messages in thread
From: Prabhakar Mahadev Lad @ 2021-06-17 14:40 UTC (permalink / raw)
To: Dan Carpenter, Geert Uytterhoeven
Cc: Michael Turquette, Stephen Boyd, linux-renesas-soc, linux-clk,
linux-kernel, kernel-janitors
Hi Dan,
Thank you for the patch.
> -----Original Message-----
> From: Dan Carpenter <dan.carpenter@oracle.com>
> Sent: 17 June 2021 15:15
> To: Geert Uytterhoeven <geert+renesas@glider.be>; Prabhakar Mahadev Lad <prabhakar.mahadev-
> lad.rj@bp.renesas.com>
> Cc: Michael Turquette <mturquette@baylibre.com>; Stephen Boyd <sboyd@kernel.org>; linux-renesas-
> soc@vger.kernel.org; linux-clk@vger.kernel.org; linux-kernel@vger.kernel.org; kernel-
> janitors@vger.kernel.org
> Subject: [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL
>
> These functions accidentally return both error pointers and NULL when there is an error. It doesn't
> cause a problem but it is confusing and seems unintentional.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> drivers/clk/renesas/renesas-rzg2l-cpg.c | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Cheers,
Prabhakar
> diff --git a/drivers/clk/renesas/renesas-rzg2l-cpg.c b/drivers/clk/renesas/renesas-rzg2l-cpg.c
> index 7ba36f19896f..83b58e1cb78f 100644
> --- a/drivers/clk/renesas/renesas-rzg2l-cpg.c
> +++ b/drivers/clk/renesas/renesas-rzg2l-cpg.c
> @@ -124,7 +124,7 @@ rzg2l_cpg_div_clk_register(const struct cpg_core_clk *core,
> core->flag, &priv->rmw_lock);
>
> if (IS_ERR(clk_hw))
> - return NULL;
> + return ERR_CAST(clk_hw);
>
> return clk_hw->clk;
> }
> @@ -174,17 +174,14 @@ rzg2l_cpg_pll_clk_register(const struct cpg_core_clk *core,
> struct clk_init_data init;
> const char *parent_name;
> struct pll_clk *pll_clk;
> - struct clk *clk;
>
> parent = clks[core->parent & 0xffff];
> if (IS_ERR(parent))
> return ERR_CAST(parent);
>
> pll_clk = devm_kzalloc(dev, sizeof(*pll_clk), GFP_KERNEL);
> - if (!pll_clk) {
> - clk = ERR_PTR(-ENOMEM);
> - return NULL;
> - }
> + if (!pll_clk)
> + return ERR_PTR(-ENOMEM);
>
> parent_name = __clk_get_name(parent);
> init.name = core->name;
> --
> 2.30.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL
2021-06-17 14:15 ` [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL Dan Carpenter
2021-06-17 14:40 ` Prabhakar Mahadev Lad
@ 2021-06-18 11:21 ` Geert Uytterhoeven
1 sibling, 0 replies; 6+ messages in thread
From: Geert Uytterhoeven @ 2021-06-18 11:21 UTC (permalink / raw)
To: Dan Carpenter
Cc: Lad Prabhakar, Michael Turquette, Stephen Boyd, Linux-Renesas,
linux-clk, Linux Kernel Mailing List, kernel-janitors
Hi Dan,
On Thu, Jun 17, 2021 at 4:15 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> These functions accidentally return both error pointers and NULL when
> there is an error. It doesn't cause a problem but it is confusing and
> seems unintentional.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-clk-for-v5.15.
> --- a/drivers/clk/renesas/renesas-rzg2l-cpg.c
> +++ b/drivers/clk/renesas/renesas-rzg2l-cpg.c
> @@ -124,7 +124,7 @@ rzg2l_cpg_div_clk_register(const struct cpg_core_clk *core,
> core->flag, &priv->rmw_lock);
>
> if (IS_ERR(clk_hw))
> - return NULL;
> + return ERR_CAST(clk_hw);
>
> return clk_hw->clk;
> }
> @@ -174,17 +174,14 @@ rzg2l_cpg_pll_clk_register(const struct cpg_core_clk *core,
> struct clk_init_data init;
> const char *parent_name;
> struct pll_clk *pll_clk;
> - struct clk *clk;
>
> parent = clks[core->parent & 0xffff];
> if (IS_ERR(parent))
> return ERR_CAST(parent);
>
> pll_clk = devm_kzalloc(dev, sizeof(*pll_clk), GFP_KERNEL);
> - if (!pll_clk) {
> - clk = ERR_PTR(-ENOMEM);
> - return NULL;
> - }
> + if (!pll_clk)
> + return ERR_PTR(-ENOMEM);
This part I already have, by virtue of
https://lore.kernel.org/r/1623896524-102058-1-git-send-email-yang.lee@linux.alibaba.com
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH v2 1/2] clk: renesas: fix a double free on error
2021-06-17 14:14 [PATCH v2 1/2] clk: renesas: fix a double free on error Dan Carpenter
2021-06-17 14:15 ` [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL Dan Carpenter
@ 2021-06-17 14:23 ` Prabhakar Mahadev Lad
2021-06-17 14:48 ` Geert Uytterhoeven
2 siblings, 0 replies; 6+ messages in thread
From: Prabhakar Mahadev Lad @ 2021-06-17 14:23 UTC (permalink / raw)
To: Dan Carpenter, Geert Uytterhoeven
Cc: Michael Turquette, Stephen Boyd, Biju Das, linux-renesas-soc,
linux-clk, kernel-janitors
Hi Dan,
Thank you for the fix.
> -----Original Message-----
> From: Dan Carpenter <dan.carpenter@oracle.com>
> Sent: 17 June 2021 15:14
> To: Geert Uytterhoeven <geert+renesas@glider.be>
> Cc: Michael Turquette <mturquette@baylibre.com>; Stephen Boyd <sboyd@kernel.org>; Prabhakar Mahadev
> Lad <prabhakar.mahadev-lad.rj@bp.renesas.com>; Biju Das <biju.das.jz@bp.renesas.com>; linux-renesas-
> soc@vger.kernel.org; linux-clk@vger.kernel.org; kernel-janitors@vger.kernel.org
> Subject: [PATCH v2 1/2] clk: renesas: fix a double free on error
>
> The "pll_clk" and "clock" pointers are allocated with devm_kzalloc() so freeing them with kfree() will
> lead to a double free. This would only happen if probe failed, and the system is not bootable.
>
> Fixes: ef3c613ccd68 ("clk: renesas: Add CPG core wrapper for RZ/G2L SoC")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> V2: Fix "pll_clk" as well.
>
> drivers/clk/renesas/renesas-rzg2l-cpg.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Also Reported-by tag,
Reported-by: kernel test robot <lkp@intel.com>
Cheers,
Prabhakar
> diff --git a/drivers/clk/renesas/renesas-rzg2l-cpg.c b/drivers/clk/renesas/renesas-rzg2l-cpg.c
> index 5009b9e48b13..7ba36f19896f 100644
> --- a/drivers/clk/renesas/renesas-rzg2l-cpg.c
> +++ b/drivers/clk/renesas/renesas-rzg2l-cpg.c
> @@ -199,11 +199,7 @@ rzg2l_cpg_pll_clk_register(const struct cpg_core_clk *core,
> pll_clk->priv = priv;
> pll_clk->type = core->type;
>
> - clk = clk_register(NULL, &pll_clk->hw);
> - if (IS_ERR(clk))
> - kfree(pll_clk);
> -
> - return clk;
> + return clk_register(NULL, &pll_clk->hw);
> }
>
> static struct clk
> @@ -473,7 +469,6 @@ rzg2l_cpg_register_mod_clk(const struct rzg2l_mod_clk *mod,
> fail:
> dev_err(dev, "Failed to register %s clock %s: %ld\n", "module",
> mod->name, PTR_ERR(clk));
> - kfree(clock);
> }
>
> #define rcdev_to_priv(x) container_of(x, struct rzg2l_cpg_priv, rcdev)
> --
> 2.30.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] clk: renesas: fix a double free on error
2021-06-17 14:14 [PATCH v2 1/2] clk: renesas: fix a double free on error Dan Carpenter
2021-06-17 14:15 ` [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL Dan Carpenter
2021-06-17 14:23 ` [PATCH v2 1/2] clk: renesas: fix a double free on error Prabhakar Mahadev Lad
@ 2021-06-17 14:48 ` Geert Uytterhoeven
2 siblings, 0 replies; 6+ messages in thread
From: Geert Uytterhoeven @ 2021-06-17 14:48 UTC (permalink / raw)
To: Dan Carpenter
Cc: Michael Turquette, Stephen Boyd, Lad Prabhakar, Biju Das,
Linux-Renesas, linux-clk, kernel-janitors
On Thu, Jun 17, 2021 at 4:14 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> The "pll_clk" and "clock" pointers are allocated with devm_kzalloc() so
> freeing them with kfree() will lead to a double free. This would only
> happen if probe failed, and the system is not bootable.
>
> Fixes: ef3c613ccd68 ("clk: renesas: Add CPG core wrapper for RZ/G2L SoC")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> V2: Fix "pll_clk" as well.
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-clk for v5.15.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-06-18 11:21 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-17 14:14 [PATCH v2 1/2] clk: renesas: fix a double free on error Dan Carpenter
2021-06-17 14:15 ` [PATCH 2/2] clk: renesas: Avoid mixing error pointers and NULL Dan Carpenter
2021-06-17 14:40 ` Prabhakar Mahadev Lad
2021-06-18 11:21 ` Geert Uytterhoeven
2021-06-17 14:23 ` [PATCH v2 1/2] clk: renesas: fix a double free on error Prabhakar Mahadev Lad
2021-06-17 14:48 ` Geert Uytterhoeven
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).