diff mbox series

[2/2] clk: renesas: Avoid mixing error pointers and NULL

Message ID YMtY7nOtqEvTokh7@mwanda (mailing list archive)
State Accepted
Delegated to: Geert Uytterhoeven
Headers show
Series [v2,1/2] clk: renesas: fix a double free on error | expand

Commit Message

Dan Carpenter June 17, 2021, 2:15 p.m. UTC
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(-)

Comments

Lad Prabhakar June 17, 2021, 2:40 p.m. UTC | #1
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
Geert Uytterhoeven June 18, 2021, 11:21 a.m. UTC | #2
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
diff mbox series

Patch

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;