Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

kthread: update comment for __to_kthread

With commit 343f4c49f243 ("kthread: Don't allocate kthread_struct for init
and umh") and commit 753550eb0ce1 ("fork: Explicitly set PF_KTHREAD"), umh
task no longer have struct kthread and PF_KTHREAD flag.

Update the comment to describe what the current rules are to detect
is something is a kthread.

Link: https://lkml.kernel.org/r/20250620100801.23185-1-jqqlijiazi@gmail.com
Signed-off-by: Jiazi Li <jqqlijiazi@gmail.com>
Signed-off-by: mingzhu.wang <mingzhu.wang@transsion.com>
Suggested-by Eric W . Biederman <ebiederm@xmission.com>
Reviewed-by: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Jiazi Li and committed by
Andrew Morton
fed307b6 caf728df

+5 -6
+5 -6
kernel/kthread.c
··· 88 88 /* 89 89 * Variant of to_kthread() that doesn't assume @p is a kthread. 90 90 * 91 - * Per construction; when: 91 + * When "(p->flags & PF_KTHREAD)" is set the task is a kthread and will 92 + * always remain a kthread. For kthreads p->worker_private always 93 + * points to a struct kthread. For tasks that are not kthreads 94 + * p->worker_private is used to point to other things. 92 95 * 93 - * (p->flags & PF_KTHREAD) && p->worker_private 94 - * 95 - * the task is both a kthread and struct kthread is persistent. However 96 - * PF_KTHREAD on it's own is not, kernel_thread() can exec() (See umh.c and 97 - * begin_new_exec()). 96 + * Return NULL for any task that is not a kthread. 98 97 */ 99 98 static inline struct kthread *__to_kthread(struct task_struct *p) 100 99 {