summaryrefslogtreecommitdiffstats
path: root/kernel/exit.c
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2022-02-17 11:24:04 +0100
committerThomas Gleixner <tglx@linutronix.de>2022-02-22 22:25:02 +0100
commit1a03d3f13ffe5dd24142d6db629e72c11b704d99 (patch)
tree84657d0e0eb3fb7653a15caf35822407dddb0274 /kernel/exit.c
parentf1c1a9ee00e4c53c9ccc03ec1aff4792948a25eb (diff)
downloadlinux-1a03d3f13ffe5dd24142d6db629e72c11b704d99.tar.gz
linux-1a03d3f13ffe5dd24142d6db629e72c11b704d99.tar.bz2
linux-1a03d3f13ffe5dd24142d6db629e72c11b704d99.zip
fork: Move task stack accounting to do_exit()
There is no need to perform the stack accounting of the outgoing task in its final schedule() invocation which happens with preemption disabled. The task is leaving, the resources will be freed and the accounting can happen in do_exit() before the actual schedule invocation which frees the stack memory. Move the accounting of the stack memory from release_task_stack() to exit_task_stack_account() which then can be invoked from do_exit(). Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Andy Lutomirski <luto@kernel.org> Link: https://lore.kernel.org/r/20220217102406.3697941-7-bigeasy@linutronix.de
Diffstat (limited to 'kernel/exit.c')
-rw-r--r--kernel/exit.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/exit.c b/kernel/exit.c
index b00a25bb4ab9..c303cffe7fdb 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -845,6 +845,7 @@ void __noreturn do_exit(long code)
put_page(tsk->task_frag.page);
validate_creds_for_do_exit(tsk);
+ exit_task_stack_account(tsk);
check_stack_usage();
preempt_disable();