[PATCH] pacct: add pacct_struct to fix some pacct bugs.

The pacct facility need an i/o operation when an accounting record is
generated.  There is a possibility to wake OOM killer up.  If OOM killer is
activated, it kills some processes to make them release process memory
regions.

But acct_process() is called in the killed processes context before calling
exit_mm(), so those processes cannot release own memory.  In the results, any
processes stop in this point and it finally cause a system stall.
This commit is contained in:
KaiGai Kohei
2006-06-25 05:49:24 -07:00
committed by Linus Torvalds
parent 6bc392741d
commit 0e4648141a
5 changed files with 51 additions and 16 deletions

View File

@@ -894,7 +894,7 @@ fastcall NORET_TYPE void do_exit(long code)
if (group_dead) {
hrtimer_cancel(&tsk->signal->real_timer);
exit_itimers(tsk->signal);
acct_process(code);
acct_collect();
}
if (unlikely(tsk->robust_list))
exit_robust_list(tsk);
@@ -906,6 +906,8 @@ fastcall NORET_TYPE void do_exit(long code)
audit_free(tsk);
exit_mm(tsk);
if (group_dead)
acct_process(code);
exit_sem(tsk);
__exit_files(tsk);
__exit_fs(tsk);