2021-03-20 16:34:45

by Alexey Dobriyan

[permalink] [raw]
Subject: [PATCH] Document that PF_KTHREAD _is_ ABI

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 <[email protected]>
---

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 */


2021-03-20 17:25:38

by Andy Lutomirski

[permalink] [raw]
Subject: Re: [PATCH] Document that PF_KTHREAD _is_ ABI

> On Mar 20, 2021, at 9:31 AM, Alexey Dobriyan <[email protected]> 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 <[email protected]>
> ---
>
> 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 */

2021-03-20 17:48:14

by Alexey Dobriyan

[permalink] [raw]
Subject: Re: [PATCH] Document that PF_KTHREAD _is_ ABI

On Sat, Mar 20, 2021 at 10:23:12AM -0700, Andy Lutomirski wrote:
> > On Mar 20, 2021, at 9:31 AM, Alexey Dobriyan <[email protected]> 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.

2021-03-20 19:27:37

by Florian Weimer

[permalink] [raw]
Subject: Re: [PATCH] Document that PF_KTHREAD _is_ ABI

* 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.

2021-03-22 07:56:25

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH] Document that PF_KTHREAD _is_ ABI

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.

2021-03-31 19:26:01

by Alexey Dobriyan

[permalink] [raw]
Subject: Re: [PATCH] Document that PF_KTHREAD _is_ ABI

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

2021-04-01 18:04:38

by Stefan Metzmacher

[permalink] [raw]
Subject: Re: [PATCH] Document that PF_KTHREAD _is_ ABI


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