]> git.hungrycats.org Git - linux/commitdiff
ib700wdt.c - fix buffer_underflow bug
authorWim Van Sebroeck <wim@iguana.be>
Wed, 15 Oct 2008 08:53:06 +0000 (08:53 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 13 Dec 2008 23:29:36 +0000 (15:29 -0800)
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>
drivers/watchdog/ib700wdt.c

index 05a28106e8eb7f8fdef5dfb35f0b61d6cd34226e..8782ec1f5aa05f3ef1713992ef09788d78b3fd6c 100644 (file)
@@ -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;