mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-20 21:51:05 +00:00
[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.
This commit is contained in:
parent
0e4648141a
commit
f6ec29a42d
4 changed files with 32 additions and 24 deletions
|
@ -894,8 +894,8 @@ fastcall NORET_TYPE void do_exit(long code)
|
|||
if (group_dead) {
|
||||
hrtimer_cancel(&tsk->signal->real_timer);
|
||||
exit_itimers(tsk->signal);
|
||||
acct_collect();
|
||||
}
|
||||
acct_collect(code, group_dead);
|
||||
if (unlikely(tsk->robust_list))
|
||||
exit_robust_list(tsk);
|
||||
#if defined(CONFIG_FUTEX) && defined(CONFIG_COMPAT)
|
||||
|
@ -907,7 +907,7 @@ fastcall NORET_TYPE void do_exit(long code)
|
|||
exit_mm(tsk);
|
||||
|
||||
if (group_dead)
|
||||
acct_process(code);
|
||||
acct_process();
|
||||
exit_sem(tsk);
|
||||
__exit_files(tsk);
|
||||
__exit_fs(tsk);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue