Hi Guenter, Great thanks for your suggestion, I have put this kind of validation into watchdog_pretimeout_invalid and watchdog_timeout_invalid. So : (1) set_timeout(10); ------> if this setting is successful set_pretimeout(20); -----> return fail (-EINVAL) (2) set_timeout(10); ------> if this setting is successful set_pretimeout(10); -----> return fail (-EINVAL) this kind of situation will not result in an invalid / unexpected timeout value. you will see this change in my next patchset On 21 May 2015 at 23:32, Guenter Roeck <linux@xxxxxxxxxxxx> wrote: > On Thu, May 21, 2015 at 04:32:34PM +0800, fu.wei@xxxxxxxxxx wrote: >> From: Fu Wei <fu.wei@xxxxxxxxxx> >> >> Also update Documentation/watchdog/watchdog-kernel-api.txt to >> introduce: >> (1)the new elements in the watchdog_device and watchdog_ops struct; >> (2)the new API "watchdog_init_timeouts". >> >> Reasons: >> (1)kernel already has two watchdog drivers are using "pretimeout": >> drivers/char/ipmi/ipmi_watchdog.c >> drivers/watchdog/kempld_wdt.c(but the definition is different) >> (2)some other dirvers are going to use this: ARM SBSA Generic Watchdog >> >> Signed-off-by: Fu Wei <fu.wei@xxxxxxxxxx> >> --- > > [ ... ] > >> >> +/* Use the following function to check if a pretimeout value is invalid */ >> +static inline bool watchdog_pretimeout_invalid(struct watchdog_device *wdd, >> + unsigned int t) >> +{ >> + return ((wdd->max_pretimeout != 0) && >> + (t < wdd->min_pretimeout || t > wdd->max_pretimeout)); >> +} > > Should this function also enforce "t < wdd->timeout", and > should watchdog_timeout_invalid() enforce "t > wdd->pretimeout" ? > > Thanks, > Guenter -- Best regards, Fu Wei Software Engineer Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch Ph: +86 21 61221326(direct) Ph: +86 186 2020 4684 (mobile) Room 1512, Regus One Corporate Avenue,Level 15, One Corporate Avenue,222 Hubin Road,Huangpu District, Shanghai,China 200021 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html