aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Khoroshilov <khoroshilov@ispras.ru>2018-03-23 17:36:46 -0400
committerWim Van Sebroeck <wim@linux-watchdog.org>2018-03-26 14:47:56 -0400
commitd66e53649c18377edc08d48901e658e4fd491d46 (patch)
tree026005ef84b7f939c7256811a937b7c4ee54a317
parent2e62c4988bbf2b514aa7672c2ee5252531c7155f (diff)
watchdog: davinci_wdt: fix error handling in davinci_wdt_probe()
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> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
-rw-r--r--drivers/watchdog/davinci_wdt.c15
1 files 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)
236 236
237 wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 237 wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
238 davinci_wdt->base = devm_ioremap_resource(dev, wdt_mem); 238 davinci_wdt->base = devm_ioremap_resource(dev, wdt_mem);
239 if (IS_ERR(davinci_wdt->base)) 239 if (IS_ERR(davinci_wdt->base)) {
240 return PTR_ERR(davinci_wdt->base); 240 ret = PTR_ERR(davinci_wdt->base);
241 goto err_clk_disable;
242 }
241 243
242 ret = watchdog_register_device(wdd); 244 ret = watchdog_register_device(wdd);
243 if (ret < 0) { 245 if (ret) {
244 clk_disable_unprepare(davinci_wdt->clk);
245 dev_err(dev, "cannot register watchdog device\n"); 246 dev_err(dev, "cannot register watchdog device\n");
247 goto err_clk_disable;
246 } 248 }
247 249
250 return 0;
251
252err_clk_disable:
253 clk_disable_unprepare(davinci_wdt->clk);
254
248 return ret; 255 return ret;
249} 256}
250 257