diff options
Diffstat (limited to 'kernel/watchdog.c')
| -rw-r--r-- | kernel/watchdog.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/kernel/watchdog.c b/kernel/watchdog.c index a06972d71060..cf0e09f452e7 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c | |||
| @@ -507,15 +507,19 @@ static void watchdog_disable_all_cpus(void) | |||
| 507 | int proc_dowatchdog_enabled(struct ctl_table *table, int write, | 507 | int proc_dowatchdog_enabled(struct ctl_table *table, int write, |
| 508 | void __user *buffer, size_t *length, loff_t *ppos) | 508 | void __user *buffer, size_t *length, loff_t *ppos) |
| 509 | { | 509 | { |
| 510 | proc_dointvec(table, write, buffer, length, ppos); | 510 | int ret; |
| 511 | 511 | ||
| 512 | if (write) { | 512 | ret = proc_dointvec(table, write, buffer, length, ppos); |
| 513 | if (watchdog_enabled) | 513 | if (ret || !write) |
| 514 | watchdog_enable_all_cpus(); | 514 | goto out; |
| 515 | else | 515 | |
| 516 | watchdog_disable_all_cpus(); | 516 | if (watchdog_enabled) |
| 517 | } | 517 | watchdog_enable_all_cpus(); |
| 518 | return 0; | 518 | else |
| 519 | watchdog_disable_all_cpus(); | ||
| 520 | |||
| 521 | out: | ||
| 522 | return ret; | ||
| 519 | } | 523 | } |
| 520 | 524 | ||
| 521 | int proc_dowatchdog_thresh(struct ctl_table *table, int write, | 525 | int proc_dowatchdog_thresh(struct ctl_table *table, int write, |
