watchdog: skip min and max timeout validity check when max_hw_heartbeat_ms is defined
authorPratyush Anand <panand@redhat.com>
Tue, 31 May 2016 06:08:08 +0000 (14:08 +0800)
committerWim Van Sebroeck <wim@iguana.be>
Sun, 17 Jul 2016 18:59:40 +0000 (20:59 +0200)
When max_hw_heartbeat_ms has a none zero value, max_timeout is not used.
So it's value can be 0. In such case if a driver uses min_timeout
functionality, then check will always fail.

This patch fixes above issue.

Signed-off-by: Pratyush Anand <panand@redhat.com>
Signed-off-by: Fu Wei <fu.wei@linaro.org>
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>
drivers/watchdog/watchdog_core.c

index f4f02d2763ec7ef6ea51c2969051b294c4cb8aef..6abb83cd7681034db7b3ca64ef41d7e6455112c2 100644 (file)
@@ -88,7 +88,7 @@ static void watchdog_check_min_max_timeout(struct watchdog_device *wdd)
         * Check that we have valid min and max timeout values, if
         * not reset them both to 0 (=not used or unknown)
         */
-       if (wdd->min_timeout > wdd->max_timeout) {
+       if (!wdd->max_hw_heartbeat_ms && wdd->min_timeout > wdd->max_timeout) {
                pr_info("Invalid min and max timeout values, resetting to 0!\n");
                wdd->min_timeout = 0;
                wdd->max_timeout = 0;