Document that PF_KTHREAD _is_ ABI
diff mbox series

Message ID YFYjOB1jpbqyNPAp@localhost.localdomain
State New, archived
Headers show
Series
  • Document that PF_KTHREAD _is_ ABI
Related show

Commit Message

Alexey Dobriyan March 20, 2021, 4:30 p.m. UTC
PF_KTHREAD value is visible via field number 9 of /proc/*/stat

	$ sudo cat /proc/2/stat
	2 (kthreadd) S 0 0 0 0 -1 2129984 0 ...
				  ^^^^^^^

It is used by at least systemd to check for kernel-threadness:
https://github.com/systemd/systemd/blob/main/src/basic/process-util.c#L354
src/basic/process-util.c:is_kernel_thread()

It means that the value can't be changed despite perceived notion that
task_struct flags are internal to kernel and can be shuffled at whim.

Formally, _all_ struct task_struct::flags PF_* values are kernel ABI
which is a disaster.

I hope we can mask everything but few flags and hope for the best :^)

Note for beginner Linux programmers:
every other way you find on the interwebs and Stack Overflow
for checking if pid belongs to a kernel thread is broken one way or
another.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

 include/linux/sched.h |    3 +++
 1 file changed, 3 insertions(+)

Comments

Andy Lutomirski March 20, 2021, 5:23 p.m. UTC | #1
> On Mar 20, 2021, at 9:31 AM, Alexey Dobriyan <adobriyan@gmail.com> wrote:
>
> PF_KTHREAD value is visible via field number 9 of /proc/*/stat
>
>    $ sudo cat /proc/2/stat
>    2 (kthreadd) S 0 0 0 0 -1 2129984 0 ...
>                  ^^^^^^^
>
> It is used by at least systemd to check for kernel-threadness:
> https://github.com/systemd/systemd/blob/main/src/basic/process-util.c#L354
> src/basic/process-util.c:is_kernel_thread()

Eww.

Could we fix it differently and more permanently by modifying the proc
code to display the values systemd expects?


>
> It means that the value can't be changed despite perceived notion that
> task_struct flags are internal to kernel and can be shuffled at whim.
>
> Formally, _all_ struct task_struct::flags PF_* values are kernel ABI
> which is a disaster.
>
> I hope we can mask everything but few flags and hope for the best :^)
>
> Note for beginner Linux programmers:
> every other way you find on the interwebs and Stack Overflow
> for checking if pid belongs to a kernel thread is broken one way or
> another.
>
> Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
> ---
>
> include/linux/sched.h |    3 +++
> 1 file changed, 3 insertions(+)
>
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -1566,6 +1566,9 @@ extern struct pid *cad_pid;
> #define PF_MEMALLOC_NOIO    0x00080000    /* All allocation requests will inherit GFP_NOIO */
> #define PF_LOCAL_THROTTLE    0x00100000    /* Throttle writes only against the bdi I write to,
>                         * I am cleaning dirty pages from some other bdi. */
> +/*
> + * PF_KTHREAD is part of kernel ABI, visible via value #9 in /proc/$pid/stat
> + */
> #define PF_KTHREAD        0x00200000    /* I am a kernel thread */
> #define PF_RANDOMIZE        0x00400000    /* Randomize virtual address space */
> #define PF_SWAPWRITE        0x00800000    /* Allowed to write to swap */
Alexey Dobriyan March 20, 2021, 5:39 p.m. UTC | #2
On Sat, Mar 20, 2021 at 10:23:12AM -0700, Andy Lutomirski wrote:
> > On Mar 20, 2021, at 9:31 AM, Alexey Dobriyan <adobriyan@gmail.com> wrote:
> >
> > PF_KTHREAD value is visible via field number 9 of /proc/*/stat
> >
> >    $ sudo cat /proc/2/stat
> >    2 (kthreadd) S 0 0 0 0 -1 2129984 0 ...
> >                  ^^^^^^^
> >
> > It is used by at least systemd to check for kernel-threadness:
> > https://github.com/systemd/systemd/blob/main/src/basic/process-util.c#L354
> > src/basic/process-util.c:is_kernel_thread()
> 
> Eww.
> 
> Could we fix it differently and more permanently by modifying the proc
> code to display the values systemd expects?

Right now there is no need to fix anything because 4 bits are available.
I put a comment so that PF_KTHREAD won't be moved accidently definitely
breaking systemd.

> > It means that the value can't be changed despite perceived notion that
> > task_struct flags are internal to kernel and can be shuffled at whim.
> >
> > Formally, _all_ struct task_struct::flags PF_* values are kernel ABI
> > which is a disaster.
> >
> > I hope we can mask everything but few flags and hope for the best :^)

> > +/*
> > + * PF_KTHREAD is part of kernel ABI, visible via value #9 in /proc/$pid/stat
> > + */
> > #define PF_KTHREAD        0x00200000    /* I am a kernel thread */

I think everything should be masked except PF_KTHREAD and maybe few
flags for which known users exist and then don't touch them.

Some flags are clearly internal like PF_MEMALLOC and PF_IDLE.

Some aren't -- PF_FORKNOEXEC. However it is silly for userspace to query it
because programs knows if it forked but didn't exec without external help.
Florian Weimer March 20, 2021, 7:20 p.m. UTC | #3
* Alexey Dobriyan:

> Some aren't -- PF_FORKNOEXEC. However it is silly for userspace to query it
> because programs knows if it forked but didn't exec without external help.

Libraries typically lack that knowledge, and may have reasons to
detect forks.  But there are probably better ways than this flag, like
a MADV_WIPEONFORK mapping, or comparing counters in MAP_PRIVATE and
MAP_SHARED mappings.
Christoph Hellwig March 22, 2021, 7:53 a.m. UTC | #4
On Sat, Mar 20, 2021 at 10:23:12AM -0700, Andy Lutomirski wrote:
> > https://github.com/systemd/systemd/blob/main/src/basic/process-util.c#L354
> > src/basic/process-util.c:is_kernel_thread()
> 
> Eww.
> 
> Could we fix it differently and more permanently by modifying the proc
> code to display the values systemd expects?

Yes, do_task_stat needs a mapping from kernel flags to UABI flags.  And
we should already discard everything we think we can from the UABI
now, and only add the ones back that are required to not break
userspace.
Alexey Dobriyan March 31, 2021, 7:23 p.m. UTC | #5
On Mon, Mar 22, 2021 at 07:53:10AM +0000, Christoph Hellwig wrote:
> On Sat, Mar 20, 2021 at 10:23:12AM -0700, Andy Lutomirski wrote:
> > > https://github.com/systemd/systemd/blob/main/src/basic/process-util.c#L354
> > > src/basic/process-util.c:is_kernel_thread()
> > 
> > Eww.
> > 
> > Could we fix it differently and more permanently by modifying the proc
> > code to display the values systemd expects?
> 
> Yes, do_task_stat needs a mapping from kernel flags to UABI flags.  And
> we should already discard everything we think we can from the UABI
> now, and only add the ones back that are required to not break
> userspace.

Sure we do. Who is going to find all the flags? I found PF_KTHREAD. :^)

More seriously,

/proc/$pid/stat was expanded to include tsk->flags in 0.99.1 (!!!)

Developers kept adding and shuffling flags probably not even realising
what's going on. The last incident happened at 5.10 when PF_IO_WORKER
was exchanged with PF_VCPU for smaller codegen.

Can I get PF_KTHREAD wasrning because it is _definitely_ used?

I'll post CSV file from 2.6.11 days:

version,#x00000001,#x00000002,#x00000004,#x00000008,#x00000010,#x00000020,#x00000040,#x00000080,#x00000100,#x00000200,#x00000400,#x00000800,#x00001000,#x00002000,#x00004000,#x00008000,#x00010000,#x00020000,#x00040000,#x00080000,#x00100000,#x00200000,#x00400000,#x00800000,#x01000000,#x02000000,#x04000000,#x08000000,#x10000000,#x20000000,#x40000000,#x80000000
v2.6.11,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_DEAD,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZE,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_SYNCWRITE,PF_BORROWED_MM,,,,,,,,,
v2.6.12,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_DEAD,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZE,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_SYNCWRITE,PF_BORROWED_MM,PF_RANDOMIZE,,,,,,,,
v2.6.13,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_DEAD,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZE,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_SYNCWRITE,PF_BORROWED_MM,PF_RANDOMIZE,,,,,,,,
v2.6.14,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_DEAD,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZE,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_SYNCWRITE,PF_BORROWED_MM,PF_RANDOMIZE,,,,,,,,
v2.6.15,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_DEAD,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZE,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_SYNCWRITE,PF_BORROWED_MM,PF_RANDOMIZE,,,,,,,,
v2.6.16,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_DEAD,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZE,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_SYNCWRITE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,,,,,,,
v2.6.17,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_DEAD,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZE,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_SYNCWRITE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_MEMPOLICY,,,
v2.6.18,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_DEAD,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZE,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,,,PF_MEMPOLICY,PF_MUTEX_TESTER,,
v2.6.19,PF_ALIGNWARN,PF_STARTING,PF_EXITING,,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZE,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,,,PF_MEMPOLICY,PF_MUTEX_TESTER,,
v2.6.20,PF_ALIGNWARN,PF_STARTING,PF_EXITING,,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,,,PF_MEMPOLICY,PF_MUTEX_TESTER,,
v2.6.21,PF_ALIGNWARN,PF_STARTING,PF_EXITING,,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,,,PF_MEMPOLICY,PF_MUTEX_TESTER,,
v2.6.22,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v2.6.23,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v2.6.24,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v2.6.25,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v2.6.26,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_BORROWED_MM,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v2.6.27,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.28,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.29,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.30,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.31,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_SWAPOFF,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.32,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_OOM_ORIGIN,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.33,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_OOM_ORIGIN,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.34,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_OOM_ORIGIN,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.35,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_OOM_ORIGIN,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.36,PF_ALIGNWARN,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_FLUSHER,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_OOM_ORIGIN,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.37,PF_KSOFTIRQD,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_OOM_ORIGIN,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.38,PF_KSOFTIRQD,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_OOM_ORIGIN,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v2.6.39,,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_OOM_ORIGIN,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v3.0,,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v3.1,,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v3.2,,PF_STARTING,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_FREEZING,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_FREEZER_NOSIG
v3.3,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v3.4,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v3.5,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v3.6,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v3.7,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v3.8,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v3.9,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_THREAD_BOUND,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v3.10,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,
v3.11,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v3.12,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v3.13,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v3.14,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMPOLICY,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v3.15,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v3.16,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_SPREAD_PAGE,PF_SPREAD_SLAB,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v3.17,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v3.18,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v3.19,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.0,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.1,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.2,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.3,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.4,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.5,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.6,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.7,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.8,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.9,,,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.10,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.11,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_FSTRANS,PF_KSWAPD,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.12,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.13,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.14,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.15,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.16,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.17,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.18,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.19,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v4.20,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_MEMSTALL,,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.0,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_MEMSTALL,PF_UMH,PF_NO_SETAFFINITY,PF_MCE_EARLY,,PF_MUTEX_TESTER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.1,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_MEMSTALL,PF_UMH,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.2,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_MEMSTALL,PF_UMH,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.3,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_MEMSTALL,PF_UMH,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.4,,PF_IDLE,PF_EXITING,PF_EXITPIDONE,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_MEMSTALL,PF_UMH,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.5,,PF_IDLE,PF_EXITING,,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_MEMSTALL,PF_UMH,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,PF_IO_WORKER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.6,,PF_IDLE,PF_EXITING,,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,PF_MEMSTALL,PF_UMH,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,PF_IO_WORKER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.7,,PF_IDLE,PF_EXITING,,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LESS_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,PF_UMH,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,PF_IO_WORKER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.8,,PF_IDLE,PF_EXITING,,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LOCAL_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,PF_UMH,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,PF_IO_WORKER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.9,,PF_IDLE,PF_EXITING,,PF_VCPU,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LOCAL_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,PF_IO_WORKER,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.10,PF_VCPU,PF_IDLE,PF_EXITING,,PF_IO_WORKER,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LOCAL_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,,PF_FREEZER_SKIP,PF_SUSPEND_TASK
v5.11,PF_VCPU,PF_IDLE,PF_EXITING,,PF_IO_WORKER,PF_WQ_WORKER,PF_FORKNOEXEC,PF_MCE_PROCESS,PF_SUPERPRIV,PF_DUMPCORE,PF_SIGNALED,PF_MEMALLOC,PF_NPROC_EXCEEDED,PF_USED_MATH,PF_USED_ASYNC,PF_NOFREEZE,PF_FROZEN,PF_KSWAPD,PF_MEMALLOC_NOFS,PF_MEMALLOC_NOIO,PF_LOCAL_THROTTLE,PF_KTHREAD,PF_RANDOMIZE,PF_SWAPWRITE,,,PF_NO_SETAFFINITY,PF_MCE_EARLY,PF_MEMALLOC_NOCMA,,PF_FREEZER_SKIP,PF_SUSPEND_TASK
Stefan Metzmacher April 1, 2021, 3:05 p.m. UTC | #6
Am 31.03.21 um 21:23 schrieb Alexey Dobriyan:
> On Mon, Mar 22, 2021 at 07:53:10AM +0000, Christoph Hellwig wrote:
>> On Sat, Mar 20, 2021 at 10:23:12AM -0700, Andy Lutomirski wrote:
>>>> https://github.com/systemd/systemd/blob/main/src/basic/process-util.c#L354
>>>> src/basic/process-util.c:is_kernel_thread()
>>>
>>> Eww.
>>>
>>> Could we fix it differently and more permanently by modifying the proc
>>> code to display the values systemd expects?
>>
>> Yes, do_task_stat needs a mapping from kernel flags to UABI flags.  And
>> we should already discard everything we think we can from the UABI
>> now, and only add the ones back that are required to not break
>> userspace.
> 
> Sure we do. Who is going to find all the flags? I found PF_KTHREAD. :^)
> 
> More seriously,
> 
> /proc/$pid/stat was expanded to include tsk->flags in 0.99.1 (!!!)
> 
> Developers kept adding and shuffling flags probably not even realising
> what's going on. The last incident happened at 5.10 when PF_IO_WORKER
> was exchanged with PF_VCPU for smaller codegen.

With the create_io_thread(), the impact of PF_IO_WORKER becomes more broadly
visible and userspace might start to look at it in order to find the difference
between userspace and kernel io threads. (I also think it should actually be renamed to
PF_IO_THREAD...)

Jens, what do you think about that?

metze

Patch
diff mbox series

--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1566,6 +1566,9 @@  extern struct pid *cad_pid;
 #define PF_MEMALLOC_NOIO	0x00080000	/* All allocation requests will inherit GFP_NOIO */
 #define PF_LOCAL_THROTTLE	0x00100000	/* Throttle writes only against the bdi I write to,
 						 * I am cleaning dirty pages from some other bdi. */
+/*
+ * PF_KTHREAD is part of kernel ABI, visible via value #9 in /proc/$pid/stat
+ */
 #define PF_KTHREAD		0x00200000	/* I am a kernel thread */
 #define PF_RANDOMIZE		0x00400000	/* Randomize virtual address space */
 #define PF_SWAPWRITE		0x00800000	/* Allowed to write to swap */