On 11/25/24 22:01, Matthew Wilcox (Oracle) wrote: > In preparation for allocating frozen pages, stop initialising the page > refcount in __alloc_pages_may_oom(). > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> Reviewed-by: Vlastimil Babka <vbabka@xxxxxxx> > --- > mm/page_alloc.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index c9e5c69f0cb9..514994cd67b8 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3638,10 +3638,8 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, > page = get_page_from_freelist((gfp_mask | __GFP_HARDWALL) & > ~__GFP_DIRECT_RECLAIM, order, > ALLOC_WMARK_HIGH|ALLOC_CPUSET, ac); > - if (page) { > - set_page_refcounted(page); > + if (page) > goto out; > - } > > /* Coredumps can quickly deplete all memory reserves */ > if (current->flags & PF_DUMPCORE) > @@ -3686,8 +3684,6 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, > if (gfp_mask & __GFP_NOFAIL) > page = __alloc_pages_cpuset_fallback(gfp_mask, order, > ALLOC_NO_WATERMARKS, ac); > - if (page) > - set_page_refcounted(page); > } > out: > mutex_unlock(&oom_lock); > @@ -4471,8 +4467,10 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, > > /* Reclaim has failed us, start killing things */ > page = __alloc_pages_may_oom(gfp_mask, order, ac, &did_some_progress); > - if (page) > + if (page) { > + set_page_refcounted(page); > goto got_pg; > + } > > /* Avoid allocations with no watermarks from looping endlessly */ > if (tsk_is_oom_victim(current) &&