mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] mm/page_alloc: apply per-task GFP context in bulk allocator
@ 2026-09-14  2:45 Qiqi Liu
  2026-09-14  3:23 ` Andrew Morton
  0 siblings, 1 reply; 2+ messages in thread
From: Qiqi Liu @ 2026-09-14  2:45 UTC (permalink / raw)
  To: akpm, vbabka
  Cc: surenb, mhocko, brendan.jackman, hannes, ziy, linux-mm,
	linux-kernel, Qiqi Liu, stable

alloc_pages_bulk_noprof() does not call current_gfp_context(), so
per-task scoped allocation constraints (PF_MEMALLOC_NOIO,
PF_MEMALLOC_NOFS, PF_MEMALLOC_PIN) are not applied on the bulk fast
path.

The most direct consequence is PF_MEMALLOC_PIN: without clearing
__GFP_MOVABLE, prepare_alloc_pages() selects MIGRATE_MOVABLE for the
PCP list, and a task under memalloc_pin_save() receives movable
pages from the bulk allocator.

Fixes: 387ba26fb1cb ("mm/page_alloc: add a bulk page allocator")
Cc: stable@vger.kernel.org
Signed-off-by: Qiqi Liu <liuqiqi@kylinos.cn>
---
 mm/page_alloc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 12fac9084c48..3be7288a1aa7 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5207,6 +5207,7 @@ unsigned long alloc_pages_bulk_noprof(gfp_t gfp, int preferred_nid,
 
 	/* May set ALLOC_NOFRAGMENT, fragmentation will return 1 page. */
 	gfp &= gfp_allowed_mask;
+	gfp = current_gfp_context(gfp);
 	if (!prepare_alloc_pages(gfp, 0, preferred_nid, nodemask, &ac, &gfp, &alloc_flags))
 		goto out;
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] mm/page_alloc: apply per-task GFP context in bulk allocator
  2026-09-14  2:45 [PATCH] mm/page_alloc: apply per-task GFP context in bulk allocator Qiqi Liu
@ 2026-09-14  3:23 ` Andrew Morton
  0 siblings, 0 replies; 2+ messages in thread
From: Andrew Morton @ 2026-09-14  3:23 UTC (permalink / raw)
  To: Qiqi Liu
  Cc: vbabka, surenb, mhocko, brendan.jackman, hannes, ziy, linux-mm,
	linux-kernel, stable

On Mon, 14 Sep 2026 10:45:55 +0800 Qiqi Liu <liuqiqi@kylinos.cn> wrote:

> alloc_pages_bulk_noprof() does not call current_gfp_context(), so
> per-task scoped allocation constraints (PF_MEMALLOC_NOIO,
> PF_MEMALLOC_NOFS, PF_MEMALLOC_PIN) are not applied on the bulk fast
> path.
> 
> The most direct consequence is PF_MEMALLOC_PIN: without clearing
> __GFP_MOVABLE, prepare_alloc_pages() selects MIGRATE_MOVABLE for the
> PCP list, and a task under memalloc_pin_save() receives movable
> pages from the bulk allocator.

Thanks.

When fixing a bug, please ensure that the changelog fully describes the
userspace-visible runtime effects of the bug.

> Fixes: 387ba26fb1cb ("mm/page_alloc: add a bulk page allocator")
> Cc: stable@vger.kernel.org

Especially when proposing a backport.



I asked $LLM this question and was told

> This can increase fragmentation and interfere with compaction or
> contiguous-memory allocations, eventually surfacing as higher
> allocation latency or allocation failures under memory pressure.

which wasn't so hard.  Please update your organization's prompts to
ensure that this information is always included in changelogs.  And, as
always, carefully review the LLM's output.

Other useful info to include in bugfix changelogs:

- how was this detected?
- is there a report from a real-world user?  Reported-by:/Closes:
- is there a reproducer/test-case?  Did the patch fix it?

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-09-14  3:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-14  2:45 [PATCH] mm/page_alloc: apply per-task GFP context in bulk allocator Qiqi Liu
2026-09-14  3:23 ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®