[PATCH v7 13/18] perf: Skip user unwind if the task is a kernel thread.
Steven Rostedt <[email protected]> Wed, 30 Apr 2025 15:57:59 -0400
| Newsgroups | org.kernel.vger.linux-toolchains,org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users,org.kernel.vger.linux-trace-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: Josh Poimboeuf <[email protected]> If the task is not a user thread, there's no user stack to unwind. Signed-off-by: Josh Poimboeuf <[email protected]> Signed-off-by: Steven Rostedt (Google) <[email protected]> --- kernel/events/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/events/core.c b/kernel/events/core.c index 430dd158b1ee..ec9edf602974 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -8101,7 +8101,8 @@ struct perf_callchain_entry * perf_callchain(struct perf_event *event, struct pt_regs *regs) { bool kernel = !event->attr.exclude_callchain_kernel; - bool user = !event->attr.exclude_callchain_user; + bool user = !event->attr.exclude_callchain_user && + !(current->flags & PF_KTHREAD); /* Disallow cross-task user callchains. */ bool crosstask = event->ctx->task && event->ctx->task != current; const u32 max_stack = event->attr.sample_max_stack; -- 2.47.2