aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2014-01-23 18:55:38 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-23 19:37:01 -0500
commitc986c14a6a88427946dc77d7018a81b95b3d41b6 (patch)
treeaf9183f50ca1b002745a491f5d9bc1f2d4b84c78 /fs
parent940fe4793a219375c4713a17c61b843720807c9d (diff)
proc: change first_tid() to use while_each_thread() rather than next_thread()
Rerwrite the main loop to use while_each_thread() instead of next_thread(). We are going to fix or replace while_each_thread(), next_thread() should be avoided whenever possible. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Michal Hocko <mhocko@suse.cz> Cc: Sameer Nanda <snanda@chromium.org> Cc: Sergey Dyasly <dserrg@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/proc/base.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c
index f223a56e613c..be8e17cabfc7 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -3106,23 +3106,23 @@ static struct task_struct *first_tid(struct task_struct *leader,
3106 } 3106 }
3107 3107
3108 /* If nr exceeds the number of threads there is nothing todo */ 3108 /* If nr exceeds the number of threads there is nothing todo */
3109 pos = NULL;
3110 if (nr && nr >= get_nr_threads(leader)) 3109 if (nr && nr >= get_nr_threads(leader))
3111 goto out; 3110 goto fail;
3112 /* It could be unhashed before we take rcu lock */ 3111 /* It could be unhashed before we take rcu lock */
3113 if (!pid_alive(leader)) 3112 if (!pid_alive(leader))
3114 goto out; 3113 goto fail;
3115 3114
3116 /* If we haven't found our starting place yet start 3115 /* If we haven't found our starting place yet start
3117 * with the leader and walk nr threads forward. 3116 * with the leader and walk nr threads forward.
3118 */ 3117 */
3119 for (pos = leader; nr > 0; --nr) { 3118 pos = leader;
3120 pos = next_thread(pos); 3119 do {
3121 if (pos == leader) { 3120 if (nr-- <= 0)
3122 pos = NULL; 3121 goto found;
3123 goto out; 3122 } while_each_thread(leader, pos);
3124 } 3123fail:
3125 } 3124 pos = NULL;
3125 goto out;
3126found: 3126found:
3127 get_task_struct(pos); 3127 get_task_struct(pos);
3128out: 3128out: