On Thu, Aug 22, 2024 at 07:42:20PM +0100, Matthew Wilcox wrote: > On Thu, Aug 22, 2024 at 11:23:04AM -0600, Yu Zhao wrote: > > Andrew, could you patch up the line above? This is what it's supposed > > to check: > > > > diff --git a/include/linux/gfp.h b/include/linux/gfp.h > > index 59266df56aeb..03ba9563c6db 100644 > > --- a/include/linux/gfp.h > > +++ b/include/linux/gfp.h > > @@ -452,7 +452,7 @@ static inline struct folio *folio_alloc_gigantic_noprof(int order, gfp_t gfp, > > { > > struct page *page; > > > > - if (WARN_ON(!order || !(gfp | __GFP_COMP))) > > + if (WARN_ON(!order || !(gfp & __GFP_COMP))) > > return NULL; > > I don't think we should do this at all. Just this should be enough: > > gfp |= __GFP_COMP; > > same as folio_alloc() (or now folio_alloc_noprof()). > Do we really caree if somebody tries to allocate a gigantic page with an > order of 0? If this ever happens, I'd bet it's a bug. > It's weird, but would work, so I don't see the need for the > warning. So the warning could catch that, but if we think it's verbose, then please fold the following in: diff --git a/include/linux/gfp.h b/include/linux/gfp.h index a951de920e20..b43934d79dd9 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -452,10 +452,7 @@ static inline struct folio *folio_alloc_gigantic_noprof(int order, gfp_t gfp, { struct page *page; - if (WARN_ON(!order || !(gfp & __GFP_COMP))) - return NULL; - - page = alloc_contig_pages_noprof(1 << order, gfp, nid, node); + page = alloc_contig_pages_noprof(1 << order, gfp | __GFP_COMP, nid, node); return page ? page_folio(page) : NULL; }