mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 11:44:01 +08:00
[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>
This commit is contained in:
parent
65a64ec3b4
commit
25ff3780d4
@ -62,7 +62,7 @@
|
|||||||
#define CONFIG_S3C2410_WATCHDOG_ATBOOT (0)
|
#define CONFIG_S3C2410_WATCHDOG_ATBOOT (0)
|
||||||
#define CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME (15)
|
#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_margin = CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME;
|
||||||
static int tmr_atboot = CONFIG_S3C2410_WATCHDOG_ATBOOT;
|
static int tmr_atboot = CONFIG_S3C2410_WATCHDOG_ATBOOT;
|
||||||
static int soft_noboot = 0;
|
static int soft_noboot = 0;
|
||||||
@ -213,11 +213,10 @@ static int s3c2410wdt_open(struct inode *inode, struct file *file)
|
|||||||
if(down_trylock(&open_lock))
|
if(down_trylock(&open_lock))
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
if (nowayout) {
|
if (nowayout)
|
||||||
__module_get(THIS_MODULE);
|
__module_get(THIS_MODULE);
|
||||||
} else {
|
|
||||||
allow_close = CLOSE_STATE_ALLOW;
|
allow_close = CLOSE_STATE_NOT;
|
||||||
}
|
|
||||||
|
|
||||||
/* start the timer */
|
/* start the timer */
|
||||||
s3c2410wdt_start();
|
s3c2410wdt_start();
|
||||||
@ -230,6 +229,7 @@ static int s3c2410wdt_release(struct inode *inode, struct file *file)
|
|||||||
* Shut off the timer.
|
* Shut off the timer.
|
||||||
* Lock it in if it's a module and we set nowayout
|
* Lock it in if it's a module and we set nowayout
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (allow_close == CLOSE_STATE_ALLOW) {
|
if (allow_close == CLOSE_STATE_ALLOW) {
|
||||||
s3c2410wdt_stop();
|
s3c2410wdt_stop();
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user