PF_MEMALLOC_NORECLAIM has been added even when it was pointed out [1] that such a allocation contex is inherently unsafe if the context doesn't fully control all allocations called from this context. Any potential __GFP_NOFAIL request from withing PF_MEMALLOC_NORECLAIM context would BUG_ON if the allocation would fail. [1] https://lore.kernel.org/all/ZcM0xtlKbAOFjv5n@tiehlicka/ Signed-off-by: Michal Hocko <mhocko@xxxxxxxx> --- include/linux/sched.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index f8d150343d42..0c9061d2a8bd 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1657,7 +1657,12 @@ extern struct pid *cad_pid; * I am cleaning dirty pages from some other bdi. */ #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ #define PF_RANDOMIZE 0x00400000 /* Randomize virtual address space */ -#define PF_MEMALLOC_NORECLAIM 0x00800000 /* All allocation requests will clear __GFP_DIRECT_RECLAIM */ +#define PF_MEMALLOC_NORECLAIM 0x00800000 /* All allocation requests will clear __GFP_DIRECT_RECLAIM. + * This is inherently unsafe unless the context fully controls + * all allocations used. Any potential __GFP_NOFAIL nested allocation + * could BUG_ON as the page allocator doesn't support non-sleeping + * __GFP_NOFAIL requests. + */ #define PF_MEMALLOC_NOWARN 0x01000000 /* All allocation requests will inherit __GFP_NOWARN */ #define PF__HOLE__02000000 0x02000000 #define PF_NO_SETAFFINITY 0x04000000 /* Userland is not allowed to meddle with cpus_mask */ -- 2.46.0 -- 2.46.0