The following commit has been merged into the perf/core branch of tip:
Commit-ID: ae577ea0bc5249c483da09670f784dbc288c80b6
Gitweb: https://git.kernel.org/tip/ae577ea0bc5249c483da09670f784dbc288c80b6
Author: Peter Zijlstra <peterz@infradead.org>
AuthorDate: Mon, 22 Sep 2025 15:46:27 +02:00
Committer: Peter Zijlstra <peterz@infradead.org>
CommitterDate: Wed, 29 Oct 2025 10:29:55 +01:00
unwind: Add comment to unwind_deferred_task_exit()
Explain why unwind_deferred_task_exit() exist and its constraints.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Link: https://patch.msgid.link/20250924080118.893367437@infradead.org
---
kernel/exit.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/kernel/exit.c b/kernel/exit.c
index 9f74e8f..5f6e78e 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -939,7 +939,6 @@ void __noreturn do_exit(long code)
tsk->exit_code = code;
taskstats_exit(tsk, group_dead);
- unwind_deferred_task_exit(tsk);
trace_sched_process_exit(tsk, group_dead);
/*
@@ -950,6 +949,12 @@ void __noreturn do_exit(long code)
* gets woken up by child-exit notifications.
*/
perf_event_exit_task(tsk);
+ /*
+ * PF_EXITING (above) ensures unwind_deferred_request() will no
+ * longer add new unwinds. While exit_mm() (below) will destroy the
+ * abaility to do unwinds. So flush any pending unwinds here.
+ */
+ unwind_deferred_task_exit(tsk);
exit_mm();