diff mbox series

wdt: dw: Fix passing NULL pointer to reset functions

Message ID 20210911191130.931814-1-seanga2@gmail.com
State Accepted
Commit b31077feca2276f0860706d1843f548baae68aee
Delegated to: Stefan Roese
Headers show
Series wdt: dw: Fix passing NULL pointer to reset functions | expand

Commit Message

Sean Anderson Sept. 11, 2021, 7:11 p.m. UTC
reset_*_bulk expects a real pointer.

Fixes: 4f7abafe1c ("driver: watchdog: reset watchdog in designware_wdt_stop() function")
Signed-off-by: Sean Anderson <seanga2@gmail.com>
---

 drivers/watchdog/designware_wdt.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Sean Anderson Sept. 19, 2021, 11:07 p.m. UTC | #1
Is it possible to get this in 2020.10? Meng's patch breaks boards which use this watchdog.

--Sean

On 9/11/21 3:11 PM, Sean Anderson wrote:
> reset_*_bulk expects a real pointer.
> 
> Fixes: 4f7abafe1c ("driver: watchdog: reset watchdog in designware_wdt_stop() function")
> Signed-off-by: Sean Anderson <seanga2@gmail.com>
> ---
> 
>   drivers/watchdog/designware_wdt.c | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/watchdog/designware_wdt.c b/drivers/watchdog/designware_wdt.c
> index afed81e6c6..cfec29bd15 100644
> --- a/drivers/watchdog/designware_wdt.c
> +++ b/drivers/watchdog/designware_wdt.c
> @@ -22,7 +22,7 @@
>   struct designware_wdt_priv {
>   	void __iomem	*base;
>   	unsigned int	clk_khz;
> -	struct reset_ctl_bulk *resets;
> +	struct reset_ctl_bulk resets;
>   };
>   
>   /*
> @@ -99,11 +99,11 @@ static int designware_wdt_stop(struct udevice *dev)
>           if (CONFIG_IS_ENABLED(DM_RESET)) {
>   		int ret;
>   
> -		ret = reset_assert_bulk(priv->resets);
> +		ret = reset_assert_bulk(&priv->resets);
>   		if (ret)
>   			return ret;
>   
> -		ret = reset_deassert_bulk(priv->resets);
> +		ret = reset_deassert_bulk(&priv->resets);
>   		if (ret)
>   			return ret;
>   	}
> @@ -156,11 +156,11 @@ static int designware_wdt_probe(struct udevice *dev)
>   #endif
>   
>   	if (CONFIG_IS_ENABLED(DM_RESET)) {
> -		ret = reset_get_bulk(dev, priv->resets);
> +		ret = reset_get_bulk(dev, &priv->resets);
>   		if (ret)
>   			goto err;
>   
> -		ret = reset_deassert_bulk(priv->resets);
> +		ret = reset_deassert_bulk(&priv->resets);
>   		if (ret)
>   			goto err;
>   	}
>
Stefan Roese Sept. 20, 2021, 5:31 a.m. UTC | #2
On 20.09.21 01:07, Sean Anderson wrote:
> Is it possible to get this in 2020.10?

Let me check, if I can find my time machine somewhere. ;)

But yes, v2021.10 should be possible. I'm just back from vacation and
will look into the new patches very soon.

Thanks,
Stefan

> Meng's patch breaks boards which 
> use this watchdog.
> 
> --Sean
> 
> On 9/11/21 3:11 PM, Sean Anderson wrote:
>> reset_*_bulk expects a real pointer.
>>
>> Fixes: 4f7abafe1c ("driver: watchdog: reset watchdog in 
>> designware_wdt_stop() function")
>> Signed-off-by: Sean Anderson <seanga2@gmail.com>
>> ---
>>
>>   drivers/watchdog/designware_wdt.c | 10 +++++-----
>>   1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/watchdog/designware_wdt.c 
>> b/drivers/watchdog/designware_wdt.c
>> index afed81e6c6..cfec29bd15 100644
>> --- a/drivers/watchdog/designware_wdt.c
>> +++ b/drivers/watchdog/designware_wdt.c
>> @@ -22,7 +22,7 @@
>>   struct designware_wdt_priv {
>>       void __iomem    *base;
>>       unsigned int    clk_khz;
>> -    struct reset_ctl_bulk *resets;
>> +    struct reset_ctl_bulk resets;
>>   };
>>   /*
>> @@ -99,11 +99,11 @@ static int designware_wdt_stop(struct udevice *dev)
>>           if (CONFIG_IS_ENABLED(DM_RESET)) {
>>           int ret;
>> -        ret = reset_assert_bulk(priv->resets);
>> +        ret = reset_assert_bulk(&priv->resets);
>>           if (ret)
>>               return ret;
>> -        ret = reset_deassert_bulk(priv->resets);
>> +        ret = reset_deassert_bulk(&priv->resets);
>>           if (ret)
>>               return ret;
>>       }
>> @@ -156,11 +156,11 @@ static int designware_wdt_probe(struct udevice 
>> *dev)
>>   #endif
>>       if (CONFIG_IS_ENABLED(DM_RESET)) {
>> -        ret = reset_get_bulk(dev, priv->resets);
>> +        ret = reset_get_bulk(dev, &priv->resets);
>>           if (ret)
>>               goto err;
>> -        ret = reset_deassert_bulk(priv->resets);
>> +        ret = reset_deassert_bulk(&priv->resets);
>>           if (ret)
>>               goto err;
>>       }
>>


Viele Grüße,
Stefan
Stefan Roese Sept. 20, 2021, 5:32 a.m. UTC | #3
On 11.09.21 21:11, Sean Anderson wrote:
> reset_*_bulk expects a real pointer.
> 
> Fixes: 4f7abafe1c ("driver: watchdog: reset watchdog in designware_wdt_stop() function")
> Signed-off-by: Sean Anderson <seanga2@gmail.com>

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

> ---
> 
>   drivers/watchdog/designware_wdt.c | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/watchdog/designware_wdt.c b/drivers/watchdog/designware_wdt.c
> index afed81e6c6..cfec29bd15 100644
> --- a/drivers/watchdog/designware_wdt.c
> +++ b/drivers/watchdog/designware_wdt.c
> @@ -22,7 +22,7 @@
>   struct designware_wdt_priv {
>   	void __iomem	*base;
>   	unsigned int	clk_khz;
> -	struct reset_ctl_bulk *resets;
> +	struct reset_ctl_bulk resets;
>   };
>   
>   /*
> @@ -99,11 +99,11 @@ static int designware_wdt_stop(struct udevice *dev)
>           if (CONFIG_IS_ENABLED(DM_RESET)) {
>   		int ret;
>   
> -		ret = reset_assert_bulk(priv->resets);
> +		ret = reset_assert_bulk(&priv->resets);
>   		if (ret)
>   			return ret;
>   
> -		ret = reset_deassert_bulk(priv->resets);
> +		ret = reset_deassert_bulk(&priv->resets);
>   		if (ret)
>   			return ret;
>   	}
> @@ -156,11 +156,11 @@ static int designware_wdt_probe(struct udevice *dev)
>   #endif
>   
>   	if (CONFIG_IS_ENABLED(DM_RESET)) {
> -		ret = reset_get_bulk(dev, priv->resets);
> +		ret = reset_get_bulk(dev, &priv->resets);
>   		if (ret)
>   			goto err;
>   
> -		ret = reset_deassert_bulk(priv->resets);
> +		ret = reset_deassert_bulk(&priv->resets);
>   		if (ret)
>   			goto err;
>   	}
> 


Viele Grüße,
Stefan
Stefan Roese Sept. 20, 2021, 8:26 a.m. UTC | #4
On 11.09.21 21:11, Sean Anderson wrote:
> reset_*_bulk expects a real pointer.
> 
> Fixes: 4f7abafe1c ("driver: watchdog: reset watchdog in designware_wdt_stop() function")
> Signed-off-by: Sean Anderson <seanga2@gmail.com>

Applied to u-boot-marvell/master

Thanks,
Stefan

> ---
> 
>   drivers/watchdog/designware_wdt.c | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/watchdog/designware_wdt.c b/drivers/watchdog/designware_wdt.c
> index afed81e6c6..cfec29bd15 100644
> --- a/drivers/watchdog/designware_wdt.c
> +++ b/drivers/watchdog/designware_wdt.c
> @@ -22,7 +22,7 @@
>   struct designware_wdt_priv {
>   	void __iomem	*base;
>   	unsigned int	clk_khz;
> -	struct reset_ctl_bulk *resets;
> +	struct reset_ctl_bulk resets;
>   };
>   
>   /*
> @@ -99,11 +99,11 @@ static int designware_wdt_stop(struct udevice *dev)
>           if (CONFIG_IS_ENABLED(DM_RESET)) {
>   		int ret;
>   
> -		ret = reset_assert_bulk(priv->resets);
> +		ret = reset_assert_bulk(&priv->resets);
>   		if (ret)
>   			return ret;
>   
> -		ret = reset_deassert_bulk(priv->resets);
> +		ret = reset_deassert_bulk(&priv->resets);
>   		if (ret)
>   			return ret;
>   	}
> @@ -156,11 +156,11 @@ static int designware_wdt_probe(struct udevice *dev)
>   #endif
>   
>   	if (CONFIG_IS_ENABLED(DM_RESET)) {
> -		ret = reset_get_bulk(dev, priv->resets);
> +		ret = reset_get_bulk(dev, &priv->resets);
>   		if (ret)
>   			goto err;
>   
> -		ret = reset_deassert_bulk(priv->resets);
> +		ret = reset_deassert_bulk(&priv->resets);
>   		if (ret)
>   			goto err;
>   	}
> 


Viele Grüße,
Stefan
diff mbox series

Patch

diff --git a/drivers/watchdog/designware_wdt.c b/drivers/watchdog/designware_wdt.c
index afed81e6c6..cfec29bd15 100644
--- a/drivers/watchdog/designware_wdt.c
+++ b/drivers/watchdog/designware_wdt.c
@@ -22,7 +22,7 @@ 
 struct designware_wdt_priv {
 	void __iomem	*base;
 	unsigned int	clk_khz;
-	struct reset_ctl_bulk *resets;
+	struct reset_ctl_bulk resets;
 };
 
 /*
@@ -99,11 +99,11 @@  static int designware_wdt_stop(struct udevice *dev)
         if (CONFIG_IS_ENABLED(DM_RESET)) {
 		int ret;
 
-		ret = reset_assert_bulk(priv->resets);
+		ret = reset_assert_bulk(&priv->resets);
 		if (ret)
 			return ret;
 
-		ret = reset_deassert_bulk(priv->resets);
+		ret = reset_deassert_bulk(&priv->resets);
 		if (ret)
 			return ret;
 	}
@@ -156,11 +156,11 @@  static int designware_wdt_probe(struct udevice *dev)
 #endif
 
 	if (CONFIG_IS_ENABLED(DM_RESET)) {
-		ret = reset_get_bulk(dev, priv->resets);
+		ret = reset_get_bulk(dev, &priv->resets);
 		if (ret)
 			goto err;
 
-		ret = reset_deassert_bulk(priv->resets);
+		ret = reset_deassert_bulk(&priv->resets);
 		if (ret)
 			goto err;
 	}