diff options
author | Ben Dooks <ben-linux@fluff.org> | 2006-09-06 15:24:35 +0400 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2006-10-03 01:07:18 +0400 |
commit | 25ff3780d4cd46804e22192a728cfb6b33c84d1b (patch) | |
tree | e7c1c2c9d936ba973fd77a202ce2d7a71c277f02 /drivers/char | |
parent | 65a64ec3b4fc904932b832c53e5a86d56b972682 (diff) | |
download | linux-25ff3780d4cd46804e22192a728cfb6b33c84d1b.tar.xz |
[WATCHDOG] s3c24XX nowayout
If the driver is not configured for `no way out`,
then the open method should not automatically allow
the setting of allow_close to CLOSE_STATE_ALLOW.
The setting of allow_close nullifies the use of
the magic close via the write path. It means that
in the default state, the watchdog will shut-down
even if the magic close has not been issued.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/watchdog/s3c2410_wdt.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/char/watchdog/s3c2410_wdt.c b/drivers/char/watchdog/s3c2410_wdt.c index be978e8ed754..a49f1f2ffa22 100644 --- a/drivers/char/watchdog/s3c2410_wdt.c +++ b/drivers/char/watchdog/s3c2410_wdt.c @@ -62,7 +62,7 @@ #define CONFIG_S3C2410_WATCHDOG_ATBOOT (0) #define CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME (15) -static int nowayout = WATCHDOG_NOWAYOUT; +static int nowayout = WATCHDOG_NOWAYOUT; static int tmr_margin = CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME; static int tmr_atboot = CONFIG_S3C2410_WATCHDOG_ATBOOT; static int soft_noboot = 0; @@ -213,11 +213,10 @@ static int s3c2410wdt_open(struct inode *inode, struct file *file) if(down_trylock(&open_lock)) return -EBUSY; - if (nowayout) { + if (nowayout) __module_get(THIS_MODULE); - } else { - allow_close = CLOSE_STATE_ALLOW; - } + + allow_close = CLOSE_STATE_NOT; /* start the timer */ s3c2410wdt_start(); @@ -230,6 +229,7 @@ static int s3c2410wdt_release(struct inode *inode, struct file *file) * Shut off the timer. * Lock it in if it's a module and we set nowayout */ + if (allow_close == CLOSE_STATE_ALLOW) { s3c2410wdt_stop(); } else { |