diff options
author | Mandeep Singh Baines <msb@chromium.org> | 2011-05-23 01:10:21 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-05-23 05:58:58 -0400 |
commit | e04ab2bc41b35c0cb6cdb07c8443f91aa738cf78 (patch) | |
tree | 511efcd50f74c0a3cf28cf5c68eaa5e70b45fbc7 | |
parent | 824c6b7f6294101f30e141117def224a56c203e6 (diff) |
watchdog: Only disable/enable watchdog if neccessary
Don't take any action on an unsuccessful write to /proc.
Signed-off-by: Mandeep Singh Baines <msb@chromium.org>
Cc: Marcin Slusarz <marcin.slusarz@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Link: http://lkml.kernel.org/r/1306127423-3347-2-git-send-email-msb@chromium.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-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, |