From: Greg Kroah-Hartman Date: Thu, 17 Oct 2024 18:18:09 +0000 (+0200) Subject: 6.11-stable patches X-Git-Tag: v5.10.228~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b9c8ce8b04909f197684dbc073dca071cde76b4;p=thirdparty%2Fkernel%2Fstable-queue.git 6.11-stable patches added patches: revert-mm-introduce-pf_memalloc_noreclaim-pf_memalloc_nowarn.patch series --- diff --git a/queue-6.11/revert-mm-introduce-pf_memalloc_noreclaim-pf_memalloc_nowarn.patch b/queue-6.11/revert-mm-introduce-pf_memalloc_noreclaim-pf_memalloc_nowarn.patch new file mode 100644 index 00000000000..cd11fc2d3bf --- /dev/null +++ b/queue-6.11/revert-mm-introduce-pf_memalloc_noreclaim-pf_memalloc_nowarn.patch @@ -0,0 +1,92 @@ +From 9a8da05d7ad619beb84d0c6904c3fa7022c6fb9b Mon Sep 17 00:00:00 2001 +From: Michal Hocko +Date: Thu, 26 Sep 2024 19:11:51 +0200 +Subject: Revert "mm: introduce PF_MEMALLOC_NORECLAIM, PF_MEMALLOC_NOWARN" + +From: Michal Hocko + +commit 9a8da05d7ad619beb84d0c6904c3fa7022c6fb9b upstream. + +This reverts commit eab0af905bfc3e9c05da2ca163d76a1513159aa4. + +There is no existing user of those flags. PF_MEMALLOC_NOWARN is dangerous +because a nested allocation context can use GFP_NOFAIL which could cause +unexpected failure. Such a code would be hard to maintain because it +could be deeper in the call chain. + +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. + +While PF_MEMALLOC_NOWARN is not dangerous the way PF_MEMALLOC_NORECLAIM is +it doesn't have any user and as Matthew has pointed out we are running out +of those flags so better reclaim it without any real users. + +[1] https://lore.kernel.org/all/ZcM0xtlKbAOFjv5n@tiehlicka/ + +Link: https://lkml.kernel.org/r/20240926172940.167084-3-mhocko@kernel.org +Signed-off-by: Michal Hocko +Reviewed-by: Matthew Wilcox (Oracle) +Reviewed-by: Christoph Hellwig +Reviewed-by: Dave Chinner +Reviewed-by: Vlastimil Babka +Cc: Al Viro +Cc: Christian Brauner +Cc: James Morris +Cc: Jan Kara +Cc: Kent Overstreet +Cc: Paul Moore +Cc: Serge E. Hallyn +Cc: Yafang Shao +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/sched.h | 4 ++-- + include/linux/sched/mm.h | 17 ++++------------- + 2 files changed, 6 insertions(+), 15 deletions(-) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1659,8 +1659,8 @@ 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_NOWARN 0x01000000 /* All allocation requests will inherit __GFP_NOWARN */ ++#define PF__HOLE__00800000 0x00800000 ++#define PF__HOLE__01000000 0x01000000 + #define PF__HOLE__02000000 0x02000000 + #define PF_NO_SETAFFINITY 0x04000000 /* Userland is not allowed to meddle with cpus_mask */ + #define PF_MCE_EARLY 0x08000000 /* Early kill for mce process policy */ +--- a/include/linux/sched/mm.h ++++ b/include/linux/sched/mm.h +@@ -258,25 +258,16 @@ static inline gfp_t current_gfp_context( + { + unsigned int pflags = READ_ONCE(current->flags); + +- if (unlikely(pflags & (PF_MEMALLOC_NOIO | +- PF_MEMALLOC_NOFS | +- PF_MEMALLOC_NORECLAIM | +- PF_MEMALLOC_NOWARN | +- PF_MEMALLOC_PIN))) { ++ if (unlikely(pflags & (PF_MEMALLOC_NOIO | PF_MEMALLOC_NOFS | PF_MEMALLOC_PIN))) { + /* +- * Stronger flags before weaker flags: +- * NORECLAIM implies NOIO, which in turn implies NOFS ++ * NOIO implies both NOIO and NOFS and it is a weaker context ++ * so always make sure it makes precedence + */ +- if (pflags & PF_MEMALLOC_NORECLAIM) +- flags &= ~__GFP_DIRECT_RECLAIM; +- else if (pflags & PF_MEMALLOC_NOIO) ++ if (pflags & PF_MEMALLOC_NOIO) + flags &= ~(__GFP_IO | __GFP_FS); + else if (pflags & PF_MEMALLOC_NOFS) + flags &= ~__GFP_FS; + +- if (pflags & PF_MEMALLOC_NOWARN) +- flags |= __GFP_NOWARN; +- + if (pflags & PF_MEMALLOC_PIN) + flags &= ~__GFP_MOVABLE; + } diff --git a/queue-6.11/series b/queue-6.11/series new file mode 100644 index 00000000000..ce7a3cc881d --- /dev/null +++ b/queue-6.11/series @@ -0,0 +1 @@ +revert-mm-introduce-pf_memalloc_noreclaim-pf_memalloc_nowarn.patch