On 11/25/24 22:01, Matthew Wilcox (Oracle) wrote: > In preparation for allocating frozen pages, stop initialising the page > refcount in __alloc_pages_cpuset_fallback(). > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> Reviewed-by: Vlastimil Babka <vbabka@xxxxxxx> > --- > mm/page_alloc.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 14fa6bf7578a..c9e5c69f0cb9 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3600,9 +3600,6 @@ __alloc_pages_cpuset_fallback(gfp_t gfp_mask, unsigned int order, > if (!page) > page = get_page_from_freelist(gfp_mask, order, > alloc_flags, ac); > - > - if (page) > - set_page_refcounted(page); > return page; > } > > @@ -3689,6 +3686,8 @@ __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); > @@ -4517,8 +4516,10 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, > * the situation worse. > */ > page = __alloc_pages_cpuset_fallback(gfp_mask, order, ALLOC_MIN_RESERVE, ac); > - if (page) > + if (page) { > + set_page_refcounted(page); > goto got_pg; > + } > > cond_resched(); > goto retry;