diff options
| author | Josh Poimboeuf <jpoimboe@kernel.org> | 2025-08-20 14:03:43 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2025-11-02 22:14:40 +0900 |
| commit | 5c63fb0b382f91f84676b1443a6a0b93c5335cb0 (patch) | |
| tree | dfa678d4e7ab9675a371e9acc4cc9c107da33ff1 /kernel | |
| parent | 89fbfc799e1d5e400df21fcdc52fd384020573e7 (diff) | |
| download | linux-5c63fb0b382f91f84676b1443a6a0b93c5335cb0.tar.gz linux-5c63fb0b382f91f84676b1443a6a0b93c5335cb0.tar.bz2 linux-5c63fb0b382f91f84676b1443a6a0b93c5335cb0.zip | |
perf: Skip user unwind if the task is a kernel thread
[ Upstream commit 16ed389227651330879e17bd83d43bd234006722 ]
If the task is not a user thread, there's no user stack to unwind.
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20250820180428.930791978@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/events/core.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 3eb9125431b4..c9a3fb6fdb2f 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7724,7 +7724,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 | PF_USER_WORKER)); /* Disallow cross-task user callchains. */ bool crosstask = event->ctx->task && event->ctx->task != current; const u32 max_stack = event->attr.sample_max_stack; |
