aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/exit.c
diff options
context:
space:
mode:
authorKaiGai Kohei <kaigai@ak.jp.nec.com>2006-06-25 08:49:25 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-25 13:01:25 -0400
commitf6ec29a42d7ac3b309a9cef179b686d23986ab98 (patch)
tree5150d4f403833ac18b468bd0e0e0a9a7cdd9f4be /kernel/exit.c
parent0e4648141af02331f21aabcd34940c70f09a2d04 (diff)
[PATCH] pacct: avoidance to refer the last thread as a representation of the process
When pacct facility generate an 'ac_flag' field in accounting record, it refers a task_struct of the thread which died last in the process. But any other task_structs are ignored. Therefore, pacct facility drops ASU flag even if root-privilege operations are used by any other threads except the last one. In addition, AFORK flag is always set when the thread of group-leader didn't die last, although this process has called execve() after fork(). We have a same matter in ac_exitcode. The recorded ac_exitcode is an exit code of the last thread in the process. There is a possibility this exitcode is not the group leader's one.
Diffstat (limited to 'kernel/exit.c')
-rw-r--r--kernel/exit.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/exit.c b/kernel/exit.c
index 819d82c2efba..e76bd02e930e 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -894,8 +894,8 @@ fastcall NORET_TYPE void do_exit(long code)
894 if (group_dead) { 894 if (group_dead) {
895 hrtimer_cancel(&tsk->signal->real_timer); 895 hrtimer_cancel(&tsk->signal->real_timer);
896 exit_itimers(tsk->signal); 896 exit_itimers(tsk->signal);
897 acct_collect();
898 } 897 }
898 acct_collect(code, group_dead);
899 if (unlikely(tsk->robust_list)) 899 if (unlikely(tsk->robust_list))
900 exit_robust_list(tsk); 900 exit_robust_list(tsk);
901#if defined(CONFIG_FUTEX) && defined(CONFIG_COMPAT) 901#if defined(CONFIG_FUTEX) && defined(CONFIG_COMPAT)
@@ -907,7 +907,7 @@ fastcall NORET_TYPE void do_exit(long code)
907 exit_mm(tsk); 907 exit_mm(tsk);
908 908
909 if (group_dead) 909 if (group_dead)
910 acct_process(code); 910 acct_process();
911 exit_sem(tsk); 911 exit_sem(tsk);
912 __exit_files(tsk); 912 __exit_files(tsk);
913 __exit_fs(tsk); 913 __exit_fs(tsk);