do_task_stat: don't take rcu_read_lock()

lock_task_sighand() was changed, and do_task_stat() doesn't need
rcu_read_lock any longer.  sighand->siglock protects all "interesting"
fields.

Except: it doesn't protect ->tty->pgrp, but neither does rcu_read_lock(), this
should be fixed.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: "Paul E. McKenney" <[email protected]>
Cc: Roland McGrath <[email protected]>
Cc: Alan Cox <[email protected]>
Cc: Pavel Emelyanov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
Oleg Nesterov authored and Linus Torvalds committed 2008-04-30 08:29:34 -07:00
1 parent d6cf723a14
commit 06fffb1267
1 file changed
-2
-2
View File
@@ -425,7 +425,6 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
cutime = cstime = utime = stime = cputime_zero;
cgtime = gtime = cputime_zero;
rcu_read_lock();
if (lock_task_sighand(task, &flags)) {
struct signal_struct *sig = task->signal;
@@ -469,7 +468,6 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
unlock_task_sighand(task, &flags);
}
rcu_read_unlock();
if (!whole || num_threads < 2)
wchan = get_wchan(task);