From: Steven Rostedt <rostedt@goodmis.org>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
bpf@vger.kernel.org, x86@kernel.org,
Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Josh Poimboeuf <jpoimboe@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Andrii Nakryiko <andrii@kernel.org>,
Indu Bhagat <indu.bhagat@oracle.com>,
"Jose E. Marchesi" <jemarch@gnu.org>,
Beau Belgrave <beaub@linux.microsoft.com>,
Jens Remus <jremus@linux.ibm.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH v11 03/11] perf: Use current->flags & PF_KTHREAD instead of current->mm == NULL
Date: Thu, 26 Jun 2025 10:11:15 -0400 [thread overview]
Message-ID: <20250626101115.3e6b99bf@gandalf.local.home> (raw)
In-Reply-To: <a3b456f2-deeb-45c9-b509-23bbe5e96cfd@kernel.dk>
On Thu, 26 Jun 2025 07:48:40 -0600
Jens Axboe <axboe@kernel.dk> wrote:
> On 6/25/25 5:15 PM, Steven Rostedt wrote:
> > From: Steven Rostedt <rostedt@goodmis.org>
> >
> > 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.
>
> This commit message is very odd, imho, and wrong. To check if it's a
> kernel thread yes you should use PF_KTHREAD, but that has nothing to do
Yeah, I figured this was wrong when I saw your reply in the other thread.
That's why I Cc'd you on this.
[
For those interested in what that other thread is:
https://lore.kernel.org/all/20250624130744.602c5b5f@batman.local.home/
]
> with PF_USER_WORKER. In fact, as mentioned in a previous reply,
> current->mm may be non-NULL for a kthread as well, if it's done
> kthread_use_mm().
>
> If the current check for "is kernel thread" was using ->mm to gauge
> then, then the current check was just wrong, period.
Yes, but unfortunately, that was a way a task was checked to see if it was
a kernel thread or not. Which was right "most of the time". But it's wrong
to use that, because it can be wrong "some of the time" :-p
Which brings us to this discussion.
I believe Peter was under the assumption that we should not use current->mm
to see if it's a user task or not, and use PF_KTHREAD instead. But for
perf, a user task is something that will return back to user space, as the
idea is to profile the user space stack trace.
You said that PF_USER_WORKER never came from user space, so from the perf
point of view, it *is* a kernel thread, and we don't want to treat it as a
user space one. If we check current->mm to be a user space task, or if we
check for PF_KTHREAD to be a kernel task, we are wrong in both cases when
it comes to a task marked as PF_USER_WORKER.
This brings up having a function like "is_kernel_thread()" (or remove the
'is' if people don't like that) that returns true if the task *only* runs
in the kernel.
-- Steve
next prev parent reply other threads:[~2025-06-26 14:11 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-25 23:15 [PATCH v11 00/11] perf: Support the deferred unwinding infrastructure Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 01/11] perf: Remove get_perf_callchain() init_nr argument Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 02/11] perf: Have get_perf_callchain() return NULL if crosstask and user are set Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 03/11] perf: Use current->flags & PF_KTHREAD instead of current->mm == NULL Steven Rostedt
2025-06-26 13:48 ` Jens Axboe
2025-06-26 14:11 ` Steven Rostedt [this message]
2025-06-25 23:15 ` [PATCH v11 04/11] perf: Simplify get_perf_callchain() user logic Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 05/11] perf: Skip user unwind if the task is a kernel thread Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 06/11] perf: Support deferred user callchains Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 07/11] perf: Support deferred user callchains for per CPU events Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 08/11] perf tools: Minimal CALLCHAIN_DEFERRED support Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 09/11] perf record: Enable defer_callchain for user callchains Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 10/11] perf script: Display PERF_RECORD_CALLCHAIN_DEFERRED Steven Rostedt
2025-06-25 23:15 ` [PATCH v11 11/11] perf tools: Merge deferred user callchains Steven Rostedt
2025-06-26 14:49 ` [PATCH v11 00/11] perf: Support the deferred unwinding infrastructure Steven Rostedt
2025-06-26 14:50 ` [PATCH v11 10/11] perf script: Display PERF_RECORD_CALLCHAIN_DEFERRED Steven Rostedt
2025-06-26 14:51 ` [PATCH v11 11/11] perf tools: Merge deferred user callchains Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250626101115.3e6b99bf@gandalf.local.home \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=andrii@kernel.org \
--cc=axboe@kernel.dk \
--cc=beaub@linux.microsoft.com \
--cc=bpf@vger.kernel.org \
--cc=indu.bhagat@oracle.com \
--cc=jemarch@gnu.org \
--cc=jolsa@kernel.org \
--cc=jpoimboe@kernel.org \
--cc=jremus@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).