Re: [RFC][PATCH 0/2] Add is_user_thread() and is_kernel_thread() helper functions

From: Andrew Morton
Date: Fri Apr 25 2025 - 19:15:31 EST


On Fri, 25 Apr 2025 16:41:20 -0400 Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> While working on the deferred stacktrace code, Peter Zijlstra told
> me to use task->flags & PF_KTHREAD instead of checking task->mm for NULL.
> This seemed reasonable, but while working on it, as there were several
> places that check if the task is a kernel thread and other places that
> check if the task is a user space thread I found it a bit confusing
> when looking at both:
>
> if (task->flags & PF_KTHREAD)
> and
> if (!(task->flags & PF_KTHREAD))
>
> Where I mixed them up sometimes, and checked for a user space thread when I
> really wanted to check for a kernel thread. I found these mistakes before
> sending out my patches, but going back and reviewing the code, I always had
> to stop and spend a few unnecessary seconds making sure the check was
> testing that flag correctly.
>
> To make this a bit more obvious, I introduced two helper functions:
>
> is_user_thread(task)
> is_kernel_thread(task)
>
> which simply test the flag for you. Thus, seeing:
>
> if (is_user_thread(task))
> or
> if (is_kernel_thread(task))
>
> it was very obvious to which test you wanted to make.

Seems sensible. Please consider renaming PF_KTHREAD in order to break
missed conversion sites.