patch-2.4.20 linux-2.4.20/drivers/char/alim7101_wdt.c
Next file: linux-2.4.20/drivers/char/amd76x_pm.c
Previous file: linux-2.4.20/drivers/char/alim1535d_wdt.c
Back to the patch index
Back to the overall index
- Lines: 75
- Date:
Thu Nov 28 15:53:12 2002
- Orig file:
linux-2.4.19/drivers/char/alim7101_wdt.c
- Orig date:
Fri Aug 2 17:39:43 2002
diff -urN linux-2.4.19/drivers/char/alim7101_wdt.c linux-2.4.20/drivers/char/alim7101_wdt.c
@@ -79,6 +79,15 @@
static int wdt_expect_close;
static struct pci_dev *alim7101_pmu;
+#ifdef CONFIG_WATCHDOG_NOWAYOUT
+static int nowayout = 1;
+#else
+static int nowayout = 0;
+#endif
+
+MODULE_PARM(nowayout,"i");
+MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CONFIG_WATCHDOG_NOWAYOUT)");
+
/*
* Whack the dog
*/
@@ -157,16 +166,23 @@
/* See if we got the magic character */
if(count)
{
- size_t ofs;
-
- /* note: just in case someone wrote the magic character
- * five months ago... */
- wdt_expect_close = 0;
-
- /* now scan */
- for(ofs = 0; ofs != count; ofs++)
- if(buf[ofs] == 'V')
- wdt_expect_close = 1;
+ if (!nowayout) {
+ size_t ofs;
+
+ /* note: just in case someone wrote the magic character
+ * five months ago... */
+ wdt_expect_close = 0;
+
+ /* now scan */
+ for(ofs = 0; ofs != count; ofs++)
+ {
+ char c;
+ if(get_user(c, buf+ofs))
+ return -EFAULT;
+ if(c == 'V')
+ wdt_expect_close = 1;
+ }
+ }
/* someone wrote to us, we should restart timer */
next_heartbeat = jiffies + WDT_HEARTBEAT;
@@ -193,15 +209,11 @@
static int fop_close(struct inode * inode, struct file * file)
{
-#ifdef CONFIG_WDT_NOWAYOUT
if(wdt_expect_close)
wdt_turnoff();
else {
printk(OUR_NAME ": device file closed unexpectedly. Will not stop the WDT!\n");
}
-#else
- wdt_turnoff();
-#endif
clear_bit(0, &wdt_is_open);
return 0;
}
@@ -210,7 +222,7 @@
{
static struct watchdog_info ident=
{
- 0,
+ WDIOF_MAGICCLOSE,
1,
"ALiM7101"
};
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)