diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2006-10-28 13:38:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-28 14:30:55 -0400 |
commit | d7c3f5f231c60d7e6ada5770b536df2b3ec1bd08 (patch) | |
tree | 04bd0ce8b70f7a43195a210d8dd6a808be329a1c | |
parent | a98b6094261c0112e9c455c96995972181bff049 (diff) |
[PATCH] fill_tgid: cleanup delays accounting
fill_tgid() should skip not only an already exited group leader. If the
task has ->exit_state != 0 it already did exit_notify(), so it also did
fill_tgid_exit()->delayacct_add_tsk(->signal->stats) and we should skip it
to avoid a double accounting.
This patch doesn't close the race completely, but it cleanups the code.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Shailabh Nagar <nagar@watson.ibm.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Jay Lan <jlan@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | kernel/taskstats.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/taskstats.c b/kernel/taskstats.c index b724aeea5443..8adfb8069c6d 100644 --- a/kernel/taskstats.c +++ b/kernel/taskstats.c | |||
@@ -235,7 +235,7 @@ static int fill_tgid(pid_t tgid, struct task_struct *first, | |||
235 | 235 | ||
236 | tsk = first; | 236 | tsk = first; |
237 | do { | 237 | do { |
238 | if (tsk->exit_state == EXIT_ZOMBIE && thread_group_leader(tsk)) | 238 | if (tsk->exit_state) |
239 | continue; | 239 | continue; |
240 | /* | 240 | /* |
241 | * Accounting subsystem can call its functions here to | 241 | * Accounting subsystem can call its functions here to |