watchdog: Drop FIFO policy in exit path
authorThomas Gleixner <tglx@linutronix.de>
Mon, 12 Sep 2011 11:40:05 +0000 (13:40 +0200)
committerIngo Molnar <mingo@elte.hu>
Sun, 18 Sep 2011 12:34:07 +0000 (14:34 +0200)
When the watchdog thread exits it runs through the exit path with FIFO
priority. There is no point in doing so. Switch back to SCHED_NORMAL
before exiting.

Cc: Don Zickus <dzickus@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1109121337461.2723@ionos
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/watchdog.c

index e952a1394d265fbbb6804fc8e233e0aaf4ee6fa2..d680381b0e9ccfc6fc0f008ae92e4141aa93ca56 100644 (file)
@@ -321,7 +321,7 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
  */
 static int watchdog(void *unused)
 {
-       static struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 };
+       struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 };
        struct hrtimer *hrtimer = &__raw_get_cpu_var(watchdog_hrtimer);
 
        sched_setscheduler(current, SCHED_FIFO, &param);
@@ -350,7 +350,8 @@ static int watchdog(void *unused)
                set_current_state(TASK_INTERRUPTIBLE);
        }
        __set_current_state(TASK_RUNNING);
-
+       param.sched_priority = 0;
+       sched_setscheduler(current, SCHED_NORMAL, &param);
        return 0;
 }