diff mbox

clk: Do not dereference potential NULL pointer

Message ID 1383221036-26890-1-git-send-email-treding@nvidia.com (mailing list archive)
State New, archived
Headers show

Commit Message

Thierry Reding Oct. 31, 2013, 12:03 p.m. UTC
A NULL pointer may be passed to _clk_register() for the dev parameter
(via clk_register()). Make sure not to dereference it before checking
that it's valid.

Signed-off-by: Thierry Reding <treding@nvidia.com>
---
 drivers/clk/clk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Stephen Boyd Oct. 31, 2013, 5:12 p.m. UTC | #1
On 10/31/13 05:03, Thierry Reding wrote:
> A NULL pointer may be passed to _clk_register() for the dev parameter
> (via clk_register()). Make sure not to dereference it before checking
> that it's valid.
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---

Ugh I had this fixed but didn't send it.

Acked-by: Stephen Boyd <sboyd@codeaurora.org>

>  drivers/clk/clk.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index b68a999..c0b52e3 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -1976,7 +1976,7 @@ static int _clk_register(struct device *dev, struct clk_hw *hw, struct clk *clk)
>  		hw->regmap = hw->init->regmap;
>  	else if (dev && dev_get_regmap(dev, NULL))
>  		hw->regmap = dev_get_regmap(dev, NULL);
> -	else if (dev->parent)
> +	else if (dev && dev->parent)
>  		hw->regmap = dev_get_regmap(dev->parent, NULL);
>  
>  	/* allocate local copy in case parent_names is __initdata */
Mike Turquette Oct. 31, 2013, 6:22 p.m. UTC | #2
Quoting Thierry Reding (2013-10-31 05:03:56)
> A NULL pointer may be passed to _clk_register() for the dev parameter
> (via clk_register()). Make sure not to dereference it before checking
> that it's valid.
> 
> Signed-off-by: Thierry Reding <treding@nvidia.com>

Hi Thierry,

I saw Olof's fix first so I took that and applied your Ack.

Regards,
Mike

> ---
>  drivers/clk/clk.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index b68a999..c0b52e3 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -1976,7 +1976,7 @@ static int _clk_register(struct device *dev, struct clk_hw *hw, struct clk *clk)
>                 hw->regmap = hw->init->regmap;
>         else if (dev && dev_get_regmap(dev, NULL))
>                 hw->regmap = dev_get_regmap(dev, NULL);
> -       else if (dev->parent)
> +       else if (dev && dev->parent)
>                 hw->regmap = dev_get_regmap(dev->parent, NULL);
>  
>         /* allocate local copy in case parent_names is __initdata */
> -- 
> 1.8.4
Thierry Reding Nov. 1, 2013, 9:13 a.m. UTC | #3
On Thu, Oct 31, 2013 at 11:22:33AM -0700, Mike Turquette wrote:
> Quoting Thierry Reding (2013-10-31 05:03:56)
> > A NULL pointer may be passed to _clk_register() for the dev parameter
> > (via clk_register()). Make sure not to dereference it before checking
> > that it's valid.
> > 
> > Signed-off-by: Thierry Reding <treding@nvidia.com>
> 
> Hi Thierry,
> 
> I saw Olof's fix first so I took that and applied your Ack.

Perhaps we need a new kind of tag. Something like Also-by: =)

Thierry
diff mbox

Patch

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index b68a999..c0b52e3 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -1976,7 +1976,7 @@  static int _clk_register(struct device *dev, struct clk_hw *hw, struct clk *clk)
 		hw->regmap = hw->init->regmap;
 	else if (dev && dev_get_regmap(dev, NULL))
 		hw->regmap = dev_get_regmap(dev, NULL);
-	else if (dev->parent)
+	else if (dev && dev->parent)
 		hw->regmap = dev_get_regmap(dev->parent, NULL);
 
 	/* allocate local copy in case parent_names is __initdata */