linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] watchdog: davinci_wdt: fix error handling in davinci_wdt_probe()
@ 2018-03-23 21:36 Alexey Khoroshilov
  2018-03-24  0:22 ` Guenter Roeck
  0 siblings, 1 reply; 2+ messages in thread
From: Alexey Khoroshilov @ 2018-03-23 21:36 UTC (permalink / raw)
  To: Wim Van Sebroeck, Guenter Roeck
  Cc: Alexey Khoroshilov, linux-watchdog, linux-kernel, ldv-project

clk_disable_unprepare() was added to one error path,
but there is another one. The patch makes sure clk is
disabled at the both of them.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
---
 drivers/watchdog/davinci_wdt.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/watchdog/davinci_wdt.c b/drivers/watchdog/davinci_wdt.c
index 3e4c592c239f..6c6594261cb7 100644
--- a/drivers/watchdog/davinci_wdt.c
+++ b/drivers/watchdog/davinci_wdt.c
@@ -236,15 +236,22 @@ static int davinci_wdt_probe(struct platform_device *pdev)
 
 	wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	davinci_wdt->base = devm_ioremap_resource(dev, wdt_mem);
-	if (IS_ERR(davinci_wdt->base))
-		return PTR_ERR(davinci_wdt->base);
+	if (IS_ERR(davinci_wdt->base)) {
+		ret = PTR_ERR(davinci_wdt->base);
+		goto err_clk_disable;
+	}
 
 	ret = watchdog_register_device(wdd);
-	if (ret < 0) {
-		clk_disable_unprepare(davinci_wdt->clk);
+	if (ret) {
 		dev_err(dev, "cannot register watchdog device\n");
+		goto err_clk_disable;
 	}
 
+	return 0;
+
+err_clk_disable:
+	clk_disable_unprepare(davinci_wdt->clk);
+
 	return ret;
 }
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] watchdog: davinci_wdt: fix error handling in davinci_wdt_probe()
  2018-03-23 21:36 [PATCH] watchdog: davinci_wdt: fix error handling in davinci_wdt_probe() Alexey Khoroshilov
@ 2018-03-24  0:22 ` Guenter Roeck
  0 siblings, 0 replies; 2+ messages in thread
From: Guenter Roeck @ 2018-03-24  0:22 UTC (permalink / raw)
  To: Alexey Khoroshilov, Wim Van Sebroeck
  Cc: linux-watchdog, linux-kernel, ldv-project

On 03/23/2018 02:36 PM, Alexey Khoroshilov wrote:
> clk_disable_unprepare() was added to one error path,
> but there is another one. The patch makes sure clk is
> disabled at the both of them.
> 
> Found by Linux Driver Verification project (linuxtesting.org).
> 
> Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
>   drivers/watchdog/davinci_wdt.c | 15 +++++++++++----
>   1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/watchdog/davinci_wdt.c b/drivers/watchdog/davinci_wdt.c
> index 3e4c592c239f..6c6594261cb7 100644
> --- a/drivers/watchdog/davinci_wdt.c
> +++ b/drivers/watchdog/davinci_wdt.c
> @@ -236,15 +236,22 @@ static int davinci_wdt_probe(struct platform_device *pdev)
>   
>   	wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>   	davinci_wdt->base = devm_ioremap_resource(dev, wdt_mem);
> -	if (IS_ERR(davinci_wdt->base))
> -		return PTR_ERR(davinci_wdt->base);
> +	if (IS_ERR(davinci_wdt->base)) {
> +		ret = PTR_ERR(davinci_wdt->base);
> +		goto err_clk_disable;
> +	}
>   
>   	ret = watchdog_register_device(wdd);
> -	if (ret < 0) {
> -		clk_disable_unprepare(davinci_wdt->clk);
> +	if (ret) {
>   		dev_err(dev, "cannot register watchdog device\n");
> +		goto err_clk_disable;
>   	}
>   
> +	return 0;
> +
> +err_clk_disable:
> +	clk_disable_unprepare(davinci_wdt->clk);
> +
>   	return ret;
>   }
>   
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-03-24  0:22 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-23 21:36 [PATCH] watchdog: davinci_wdt: fix error handling in davinci_wdt_probe() Alexey Khoroshilov
2018-03-24  0:22 ` Guenter Roeck

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).