watchdog: sprd_wdt: Fix error handling in sprd_wdt_enable()
If clk_prepare_enable(wdt->rtc_enable) fails, wdt->enable clock is left enabled. 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
d2fc8db691
commit
3c578cd4bc
|
@ -154,8 +154,10 @@ static int sprd_wdt_enable(struct sprd_wdt *wdt)
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
ret = clk_prepare_enable(wdt->rtc_enable);
|
ret = clk_prepare_enable(wdt->rtc_enable);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
clk_disable_unprepare(wdt->enable);
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
sprd_wdt_unlock(wdt->base);
|
sprd_wdt_unlock(wdt->base);
|
||||||
val = readl_relaxed(wdt->base + SPRD_WDT_CTRL);
|
val = readl_relaxed(wdt->base + SPRD_WDT_CTRL);
|
||||||
|
|
Loading…
Reference in New Issue