From: Kees Cook <kees@kernel.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
Masami Hiramatsu <mhiramat@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Andrew Morton <akpm@linux-foundation.org>,
Peter Zijlstra <peterz@infradead.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@redhat.com>,
x86@kernel.org, bpf@vger.kernel.org, Tejun Heo <tj@kernel.org>,
Julia Lawall <Julia.Lawall@inria.fr>,
Nicolas Palix <nicolas.palix@imag.fr>,
cocci@inria.fr
Subject: Re: [RFC][PATCH 1/2] kthread: Add is_user_thread() and is_kernel_thread() helper functions
Date: Fri, 25 Apr 2025 16:03:16 -0700 [thread overview]
Message-ID: <202504251601.5D29BF8F01@keescook> (raw)
In-Reply-To: <20250425204313.616425861@goodmis.org>
On Fri, Apr 25, 2025 at 04:41:21PM -0400, Steven Rostedt wrote:
> From: Steven Rostedt <rostedt@goodmis.org>
>
> In order to know if a task is a user thread or a kernel thread it is
> recommended to test the task flags for PF_KTHREAD. The old way was to
> check if the task mm pointer is NULL.
>
> It is an easy mistake to not test the flag correctly, as:
>
> if (!(task->flag & PF_KTHREAD))
>
> Is not immediately obvious that it's testing for a user thread.
>
> Add helper functions:
>
> is_user_thread()
> is_kernel_thread()
>
> that can make seeing what is being tested for much more obvious:
>
> if (is_user_thread(task))
>
> Link: https://lore.kernel.org/all/20250425133416.63d3e3b8@gandalf.local.home/
>
> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
> ---
> include/linux/sched.h | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index f96ac1982893..823f38b0fd3e 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -1785,6 +1785,16 @@ static __always_inline bool is_percpu_thread(void)
> #endif
> }
>
> +static __always_inline bool is_user_thread(struct task_struct *task)
> +{
> + return !(task->flags & PF_KTHREAD);
> +}
> +
> +static __always_inline bool is_kernel_thread(struct task_struct *task)
> +{
> + return task->flags & PF_KTHREAD;
nit: maybe do explicit type conversion:
return !!(task->flags & PF_KTHREAD);
but that's just a style issue, really.
Reviewed-by: Kees Cook <kees@kernel.org>
Thank you for not using current->mm -- KUnit, live patching, etc, all
use current->mm but are kthreads. :)
--
Kees Cook
next prev parent reply other threads:[~2025-04-25 23:03 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-25 20:41 [RFC][PATCH 0/2] Add is_user_thread() and is_kernel_thread() helper functions Steven Rostedt
2025-04-25 20:41 ` [RFC][PATCH 1/2] kthread: " Steven Rostedt
2025-04-25 23:03 ` Kees Cook [this message]
2025-04-26 12:36 ` Steven Rostedt
2025-04-26 11:08 ` Borislav Petkov
2025-04-26 12:37 ` Steven Rostedt
2025-04-25 20:41 ` [RFC][PATCH 2/2] treewide: Have the task->flags & PF_KTHREAD check use the " Steven Rostedt
2025-04-25 23:09 ` Kees Cook
2025-04-26 3:22 ` Alexei Starovoitov
2025-04-28 18:34 ` Tejun Heo
2025-04-25 23:14 ` [RFC][PATCH 0/2] Add is_user_thread() and is_kernel_thread() " Andrew Morton
2025-04-26 10:41 ` Julia Lawall
2025-04-26 10:41 ` [cocci] " Julia Lawall
2025-04-26 12:43 ` Steven Rostedt
2025-04-26 18:42 ` [PATCH] sched/core: Introduce task_*() helpers for PF_ flags Ingo Molnar
2025-04-26 18:51 ` Ingo Molnar
2025-04-26 20:06 ` Steven Rostedt
2025-04-28 12:12 ` 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=202504251601.5D29BF8F01@keescook \
--to=kees@kernel.org \
--cc=Julia.Lawall@inria.fr \
--cc=akpm@linux-foundation.org \
--cc=bpf@vger.kernel.org \
--cc=cocci@inria.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=nicolas.palix@imag.fr \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tj@kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.