summaryrefslogtreecommitdiffstats
path: root/drivers/watchdog
diff options
context:
space:
mode:
authorWolfram Sang <wsa+renesas@sang-engineering.com>2016-03-02 23:33:36 +0100
committerWim Van Sebroeck <wim@iguana.be>2016-03-16 21:09:08 +0100
commitccc8208d0855a5b02a4fc49c141b6f1dbf282304 (patch)
treefe95e7e1685fe94fc97697801e759eccb03eac67 /drivers/watchdog
parentwatchdog: s3c2410_wdt: Add max and min timeout values (diff)
downloadlinux-ccc8208d0855a5b02a4fc49c141b6f1dbf282304.tar.xz
linux-ccc8208d0855a5b02a4fc49c141b6f1dbf282304.zip
watchdog: atlas7_wdt: test clock rate to avoid division by 0
The clk API may return 0 on clk_get_rate, so we should check the result before using it as a divisor. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/watchdog')
-rw-r--r--drivers/watchdog/atlas7_wdt.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/watchdog/atlas7_wdt.c b/drivers/watchdog/atlas7_wdt.c
index df6d9242a319..ed80734befae 100644
--- a/drivers/watchdog/atlas7_wdt.c
+++ b/drivers/watchdog/atlas7_wdt.c
@@ -154,6 +154,11 @@ static int atlas7_wdt_probe(struct platform_device *pdev)
writel(0, wdt->base + ATLAS7_WDT_CNT_CTRL);
wdt->tick_rate = clk_get_rate(clk);
+ if (!wdt->tick_rate) {
+ ret = -EINVAL;
+ goto err1;
+ }
+
wdt->clk = clk;
atlas7_wdd.min_timeout = 1;
atlas7_wdd.max_timeout = UINT_MAX / wdt->tick_rate;