On Fri, 25 Apr 2025, Andrew Morton wrote: > 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. Maybe: @r depends on !(file in "include/linux/sched.h")@ // Kees's suggestion position p; expression e; @@ ( e = (PF_KTHREAD | ...) | e |= (PF_KTHREAD | ...) | PF_KTHREAD@p ) @script:ocaml@ // change to python if desired p << r.p; @@ Printf.printf "%s:%d: Warning: remaining use of PF_KTHREAD\n" (List.hd p).file (List.hd p).line julia