mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 13:44:15 +08:00
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>
This commit is contained in:
parent
2e62c4988b
commit
d66e53649c
@ -236,15 +236,22 @@ static int davinci_wdt_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
davinci_wdt->base = devm_ioremap_resource(dev, wdt_mem);
|
davinci_wdt->base = devm_ioremap_resource(dev, wdt_mem);
|
||||||
if (IS_ERR(davinci_wdt->base))
|
if (IS_ERR(davinci_wdt->base)) {
|
||||||
return PTR_ERR(davinci_wdt->base);
|
ret = PTR_ERR(davinci_wdt->base);
|
||||||
|
goto err_clk_disable;
|
||||||
|
}
|
||||||
|
|
||||||
ret = watchdog_register_device(wdd);
|
ret = watchdog_register_device(wdd);
|
||||||
if (ret < 0) {
|
if (ret) {
|
||||||
clk_disable_unprepare(davinci_wdt->clk);
|
|
||||||
dev_err(dev, "cannot register watchdog device\n");
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user