Messages in this thread | | | Date | Tue, 29 Sep 2015 07:41:51 +0100 | From | Aaron Tomlin <> | Subject | Re: [PATCH 5/5] watchdog: do not unpark threads in watchdog_park_threads() on error |
| |
On Mon 2015-09-28 22:44 +0200, Ulrich Obergfell wrote: > If kthread_park() returns an error, watchdog_park_threads() should not > blindly 'roll back' the already parked threads to the unparked state. > Instead leave it up to the callers to handle such errors appropriately > in their context. For example, it is redundant to unpark the threads > if the lockup detectors will soon be disabled by the callers anyway. > > Signed-off-by: Ulrich Obergfell <uobergfe@redhat.com> > --- > kernel/watchdog.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/kernel/watchdog.c b/kernel/watchdog.c > index 3bc22a9..af70bf2 100644 > --- a/kernel/watchdog.c > +++ b/kernel/watchdog.c > @@ -654,6 +654,12 @@ static struct smp_hotplug_thread watchdog_threads = { > > /* > * park all watchdog threads that are specified in 'watchdog_cpumask' > + * > + * This function returns an error if kthread_park() of a watchdog thread > + * fails. In this situation, the watchdog threads of some CPUs can already > + * be parked and the watchdog threads of other CPUs can still be runnable. > + * Callers are expected to handle this special condition as appropriate in > + * their context. > */ > static int watchdog_park_threads(void) > { > @@ -665,10 +671,6 @@ static int watchdog_park_threads(void) > if (ret) > break; > } > - if (ret) { > - for_each_watchdog_cpu(cpu) > - kthread_unpark(per_cpu(softlockup_watchdog, cpu)); > - } > put_online_cpus(); > > return ret;
Reviewed-by: Aaron Tomlin <atomlin@redhat.com> [unhandled content-type:application/pgp-signature] | |