aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/watchdog.c
diff options
context:
space:
mode:
authorMandeep Singh Baines <msb@chromium.org>2011-05-23 01:10:21 -0400
committerIngo Molnar <mingo@elte.hu>2011-05-23 05:58:58 -0400
commite04ab2bc41b35c0cb6cdb07c8443f91aa738cf78 (patch)
tree511efcd50f74c0a3cf28cf5c68eaa5e70b45fbc7 /kernel/watchdog.c
parent824c6b7f6294101f30e141117def224a56c203e6 (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>
Diffstat (limited to 'kernel/watchdog.c')
-rw-r--r--kernel/watchdog.c20
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)
507int proc_dowatchdog_enabled(struct ctl_table *table, int write, 507int 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
521out:
522 return ret;
519} 523}
520 524
521int proc_dowatchdog_thresh(struct ctl_table *table, int write, 525int proc_dowatchdog_thresh(struct ctl_table *table, int write,