[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:

committed by
Linus Torvalds

parent
6bc392741d
commit
0e4648141a
@@ -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);
|
||||
|
Reference in New Issue
Block a user