From a6dc75da3d3ede05b9d188dc9866289133f99611 Mon Sep 17 00:00:00 2001 From: Frederic Weisbecker Date: Tue, 10 Feb 2009 16:52:37 +0100 Subject: [PATCH] --- yaml --- r: 142791 b: refs/heads/master c: cf2592f59c0e8ed4308adbdb2e0a88655379d579 h: refs/heads/master i: 142789: bb05d79e1ed1118f87e919bcca796406af05f768 142787: 8b75c3dd53eee558e4a60192850e33edff7f9186 142783: b74b921cf895f31cc8ad0a576d7030fc2960504f v: v3 --- [refs] | 2 +- trunk/kernel/hung_task.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index b3a2454a775f..66c44dcadc35 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 17406b82d621930cca8ccc1272cdac9a7dae8e40 +refs/heads/master: cf2592f59c0e8ed4308adbdb2e0a88655379d579 diff --git a/trunk/kernel/hung_task.c b/trunk/kernel/hung_task.c index 0c924de58cb2..022a4927b785 100644 --- a/trunk/kernel/hung_task.c +++ b/trunk/kernel/hung_task.c @@ -72,7 +72,13 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout) { unsigned long switch_count = t->nvcsw + t->nivcsw; - if (t->flags & PF_FROZEN) + /* + * Ensure the task is not frozen. + * Also, when a freshly created task is scheduled once, changes + * its state to TASK_UNINTERRUPTIBLE without having ever been + * switched out once, it musn't be checked. + */ + if (unlikely(t->flags & PF_FROZEN || !switch_count)) return; if (switch_count != t->last_switch_count) {