kernel/hung_task.c: change hung_task.c to use for_each_process_thread()
authorAaron Tomlin <atomlin@redhat.com>
Wed, 15 Apr 2015 23:16:47 +0000 (16:16 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 15 Apr 2015 23:35:22 +0000 (16:35 -0700)
In check_hung_uninterruptible_tasks() avoid the use of deprecated
while_each_thread().

The "max_count" logic will prevent a livelock - see commit 0c740d0a
("introduce for_each_thread() to replace the buggy while_each_thread()").
Having said this let's use for_each_process_thread().

Signed-off-by: Aaron Tomlin <atomlin@redhat.com>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Dave Wysochanski <dwysocha@redhat.com>
Cc: Aaron Tomlin <atomlin@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/hung_task.c

index 06db12434d727c65c48cb96126a1be77992e15c0..e0f90c2b57aa831ac978f70e5730830f52bcd5c7 100644 (file)
@@ -169,7 +169,7 @@ static void check_hung_uninterruptible_tasks(unsigned long timeout)
                return;
 
        rcu_read_lock();
-       do_each_thread(g, t) {
+       for_each_process_thread(g, t) {
                if (!max_count--)
                        goto unlock;
                if (!--batch_count) {
@@ -180,7 +180,7 @@ static void check_hung_uninterruptible_tasks(unsigned long timeout)
                /* use "==" to skip the TASK_KILLABLE tasks waiting on NFS */
                if (t->state == TASK_UNINTERRUPTIBLE)
                        check_hung_task(t, timeout);
-       } while_each_thread(g, t);
+       }
  unlock:
        rcu_read_unlock();
 }