On Thu, 7 May 2015 15:09:24 -0700 Doug Anderson <dianders@xxxxxxxxxxxx> wrote: > If you've got code that does this in a tight loop > 1. Open watchdog > 2. Send 'expect close' > 3. Close watchdog > ...you'll eventually trigger a watchdog reset. You can reproduce this > by using daisydog (1) and running: > while true; do daisydog -c > /dev/null; done > > The problem is that each time you write to the watchdog for 'expect > close' it moves the timer .5 seconds out. The timer thus never fires > and never pats the watchdog for you. > > 1: http://git.chromium.org/gitweb/?p=chromiumos/third_party/daisydog.git > > Signed-off-by: Doug Anderson <dianders@xxxxxxxxxxxx> > --- > drivers/watchdog/dw_wdt.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/watchdog/dw_wdt.c b/drivers/watchdog/dw_wdt.c > index 3fa2f19..ff5d734 100644 > --- a/drivers/watchdog/dw_wdt.c > +++ b/drivers/watchdog/dw_wdt.c > @@ -220,6 +220,7 @@ static ssize_t dw_wdt_write(struct file *filp, const char __user *buf, > } > > dw_wdt_set_next_heartbeat(); > + dw_wdt_keepalive(); > mod_timer(&dw_wdt.timer, jiffies + WDT_TIMEOUT); > > return len; Tested-by: Jisheng Zhang <jszhang@xxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html