From: Steven Rostedt <rostedt@xxxxxxxxxxx> To determine if a task is a kernel thread or not, it is more reliable to use (current->flags & PF_KTHREAD) than to rely on current->mm being NULL. That is because some kernel tasks (io_uring helpers) may have a mm field. Link: https://lore.kernel.org/linux-trace-kernel/20250424163607.GE18306@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx> --- kernel/events/callchain.c | 6 +++--- kernel/events/core.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c index cd0e3fc7ed05..42d21761cb4d 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) regs = NULL; + else + regs = task_pt_regs(current); } if (regs) { diff --git a/kernel/events/core.c b/kernel/events/core.c index ca7e9e7d19bf..ae371007a2a6 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -8054,7 +8054,7 @@ static u64 perf_virt_to_phys(u64 virt) * Try IRQ-safe get_user_page_fast_only first. * If failed, leave phys_addr as 0. */ - if (current->mm != NULL) { + if (!(current->flags & PF_KTHREAD)) { struct page *p; pagefault_disable(); -- 2.47.2