diff options
| author | Steven Rostedt <rostedt@goodmis.org> | 2025-08-20 14:03:41 -0400 |
|---|---|---|
| committer | Peter Zijlstra <peterz@infradead.org> | 2025-08-26 09:51:13 +0200 |
| commit | 90942f9fac05702065ff82ed0bade0d08168d4ea (patch) | |
| tree | 0002a5f7e78d1c877f9806121ee4d1eed84eb50d /kernel/events/callchain.c | |
| parent | 153f9e74dec230f2e070e16fa061bc7adfd2c450 (diff) | |
| download | linux-next-90942f9fac05702065ff82ed0bade0d08168d4ea.tar.gz linux-next-90942f9fac05702065ff82ed0bade0d08168d4ea.zip | |
perf: Use current->flags & PF_KTHREAD|PF_USER_WORKER instead of current->mm == NULL
To determine if a task is a kernel thread or not, it is more reliable to
use (current->flags & (PF_KTHREAD|PF_USER_WORKERi)) than to rely on
current->mm being NULL. That is because some kernel tasks (io_uring
helpers) may have a mm field.
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.592367294@kernel.org
Diffstat (limited to 'kernel/events/callchain.c')
| -rw-r--r-- | kernel/events/callchain.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c index cd0e3fc7ed05..5982d18f169b 100644 --- a/kernel/events/callchain.c +++ b/kernel/events/callchain.c @@ -246,10 +246,10 @@ get_perf_callchain(struct pt_regs *regs, bool kernel, bool user, if (user && !crosstask) { if (!user_mode(regs)) { - if (current->mm) - regs = task_pt_regs(current); - else + if (current->flags & (PF_KTHREAD | PF_USER_WORKER)) regs = NULL; + else + regs = task_pt_regs(current); } if (regs) { |
