summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@ingics.com>2012-12-22 04:07:01 +0100
committerWim Van Sebroeck <wim@iguana.be>2013-01-02 12:06:49 +0100
commit98e4a293895dda2b74476ac3a9f79c58b5d0155a (patch)
treed79ceba10dcf42c5c416b685aa80b2f047054d6b
parentwatchdog: da9055: Fix invalid free of devm_ allocated data (diff)
downloadlinux-98e4a293895dda2b74476ac3a9f79c58b5d0155a.tar.xz
linux-98e4a293895dda2b74476ac3a9f79c58b5d0155a.zip
watchdog: da9055: Don't update wdt_dev->timeout in da9055_wdt_set_timeout error path
Otherwise, WDIOC_GETTIMEOUT returns wrong value if set_timeout fails. This patch also removes unnecessary ret variable in da9055_wdt_ping function. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
-rw-r--r--drivers/watchdog/da9055_wdt.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/watchdog/da9055_wdt.c b/drivers/watchdog/da9055_wdt.c
index 31d537959bcc..f5ad10546fc9 100644
--- a/drivers/watchdog/da9055_wdt.c
+++ b/drivers/watchdog/da9055_wdt.c
@@ -72,20 +72,21 @@ static int da9055_wdt_set_timeout(struct watchdog_device *wdt_dev,
DA9055_TWDSCALE_MASK,
da9055_wdt_maps[i].reg_val <<
DA9055_TWDSCALE_SHIFT);
- if (ret < 0)
+ if (ret < 0) {
dev_err(da9055->dev,
"Failed to update timescale bit, %d\n", ret);
+ return ret;
+ }
wdt_dev->timeout = timeout;
- return ret;
+ return 0;
}
static int da9055_wdt_ping(struct watchdog_device *wdt_dev)
{
struct da9055_wdt_data *driver_data = watchdog_get_drvdata(wdt_dev);
struct da9055 *da9055 = driver_data->da9055;
- int ret;
/*
* We have a minimum time for watchdog window called TWDMIN. A write
@@ -94,10 +95,8 @@ static int da9055_wdt_ping(struct watchdog_device *wdt_dev)
mdelay(DA9055_TWDMIN);
/* Reset the watchdog timer */
- ret = da9055_reg_update(da9055, DA9055_REG_CONTROL_E,
- DA9055_WATCHDOG_MASK, 1);
-
- return ret;
+ return da9055_reg_update(da9055, DA9055_REG_CONTROL_E,
+ DA9055_WATCHDOG_MASK, 1);
}
static void da9055_wdt_release_resources(struct kref *r)