summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Van Sebroeck <wim@iguana.be>2008-10-15 08:53:06 +0000
committerGreg Kroah-Hartman <gregkh@suse.de>2008-12-13 15:29:36 -0800
commitc6e9f8086227d824a45de8b0d9f626d66a30c6b0 (patch)
treeb4fd6acbf1077b9d8618fbd76671211ad1284043
parentc832f62d3d057abfc1125621c80ede5840cf7aef (diff)
ib700wdt.c - fix buffer_underflow bug
commit 7c2500f17d65092d93345f3996cf82ebca17e9ff upstream. This fixes Bug 11399: if ibwdt_set_heartbeat(int t) is called with value 30 then the check "if ((t < 0) || (t > 30))" in ibwdt_set_heartbeat is not going to fail because t == 30, but in the loop, the check wd_times[i] > t is never going to be true because none of the wd_times are greater than the value of t (i.e. 30). So we are exiting the loop with i == -1 and therefore setting wd_margin to -1 which is wrong. Reported-by: Zvonimir Rakamaric <zrakamar@cs.ubc.ca> Signed-off-by: Wim Van Sebroeck <wim@iguana.be> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/watchdog/ib700wdt.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/watchdog/ib700wdt.c b/drivers/watchdog/ib700wdt.c
index 05a28106e8eb..8782ec1f5aa0 100644
--- a/drivers/watchdog/ib700wdt.c
+++ b/drivers/watchdog/ib700wdt.c
@@ -154,7 +154,7 @@ static int ibwdt_set_heartbeat(int t)
return -EINVAL;
for (i = 0x0F; i > -1; i--)
- if (wd_times[i] > t)
+ if (wd_times[i] >= t)
break;
wd_margin = i;
return 0;