Change first_tid() to use while_each_thread() instead of
next_thread().

This doesn't make the code simpler/better, but we are going
to fix or replace while_each_thread(), next_thread() should
be avoided whenever possible.

Signed-off-by: Oleg Nesterov <o...@redhat.com>
---
 fs/proc/base.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/fs/proc/base.c b/fs/proc/base.c
index c939c9f..bed1096 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -3186,24 +3186,24 @@ static struct task_struct *first_tid(struct task_struct 
*leader,
                        goto found;
        }
 
-       pos = NULL;
        /* If nr exceeds the number of threads there is nothing todo */
        if (nr && nr >= get_nr_threads(leader))
-               goto out;
+               goto fail;
        /* It could be unhashed before we take rcu lock */
        if (!pid_alive(leader))
-               goto out;
+               goto fail;
 
        /* If we haven't found our starting place yet start
         * with the leader and walk nr threads forward.
         */
-       for (pos = leader; nr > 0; --nr) {
-               pos = next_thread(pos);
-               if (pos == leader) {
-                       pos = NULL;
-                       goto out;
-               }
-       }
+       pos = leader;
+       do {
+               if (nr-- <= 0)
+                       goto found;
+       } while_each_thread(leader, pos);
+fail:
+       pos = NULL;
+       goto out;
 found:
        get_task_struct(pos);
 out:
-- 
1.5.5.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to