aboutsummaryrefslogtreecommitdiffstats
path: root/fs/proc/array.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2008-01-10 15:52:04 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-01-13 12:56:43 -0500
commit84427eaef1fb91704c7112bdb598c810003b99f3 (patch)
treebf22a7186295fcb6dc6bced34cfa73aa74b27300 /fs/proc/array.c
parent974a9f0b47da74e28f68b9c8645c3786aa5ace1a (diff)
remove task_ppid_nr_ns
task_ppid_nr_ns is called in three places. One of these should never have called it. In the other two, using it broke the existing semantics. This was presumably accidental. If the function had not been there, it would have been much more obvious to the eye that those patches were changing the behavior. We don't need this function. In task_state, the pid of the ptracer is not the ppid of the ptracer. In do_task_stat, ppid is the tgid of the real_parent, not its pid. I also moved the call outside of lock_task_sighand, since it doesn't need it. In sys_getppid, ppid is the tgid of the real_parent, not its pid. Signed-off-by: Roland McGrath <roland@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/proc/array.c')
-rw-r--r--fs/proc/array.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/proc/array.c b/fs/proc/array.c
index 65c62e1bfd6f..810eb8fd6500 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -169,7 +169,7 @@ static inline char *task_state(struct task_struct *p, char *buffer)
169 ppid = pid_alive(p) ? 169 ppid = pid_alive(p) ?
170 task_tgid_nr_ns(rcu_dereference(p->real_parent), ns) : 0; 170 task_tgid_nr_ns(rcu_dereference(p->real_parent), ns) : 0;
171 tpid = pid_alive(p) && p->ptrace ? 171 tpid = pid_alive(p) && p->ptrace ?
172 task_ppid_nr_ns(rcu_dereference(p->parent), ns) : 0; 172 task_pid_nr_ns(rcu_dereference(p->parent), ns) : 0;
173 buffer += sprintf(buffer, 173 buffer += sprintf(buffer,
174 "State:\t%s\n" 174 "State:\t%s\n"
175 "Tgid:\t%d\n" 175 "Tgid:\t%d\n"
@@ -426,6 +426,7 @@ static int do_task_stat(struct task_struct *task, char *buffer, int whole)
426 cgtime = gtime = cputime_zero; 426 cgtime = gtime = cputime_zero;
427 427
428 rcu_read_lock(); 428 rcu_read_lock();
429 ppid = task_tgid_nr_ns(task->real_parent, ns);
429 if (lock_task_sighand(task, &flags)) { 430 if (lock_task_sighand(task, &flags)) {
430 struct signal_struct *sig = task->signal; 431 struct signal_struct *sig = task->signal;
431 432
@@ -465,7 +466,6 @@ static int do_task_stat(struct task_struct *task, char *buffer, int whole)
465 466
466 sid = task_session_nr_ns(task, ns); 467 sid = task_session_nr_ns(task, ns);
467 pgid = task_pgrp_nr_ns(task, ns); 468 pgid = task_pgrp_nr_ns(task, ns);
468 ppid = task_ppid_nr_ns(task, ns);
469 469
470 unlock_task_sighand(task, &flags); 470 unlock_task_sighand(task, &flags);
471 } 471 }