On Wed, Apr 07, 2021 at 05:49:14PM +0200, Vlastimil Babka wrote: > On 4/1/21 11:24 PM, Sergei Trofimovich wrote: > > Very minor optimization. > > I'm not entirely sure about accuracy of "only for tracked pages". Missing > page_ext is something I'm not even sure how possible it is in practice, probably > just an error condition (failed to be allocated?). Or did you observe this in > practice? But anyway, the change is not wrong. Never saw missing 'page_ext' in practice (I also did not check for it explicitly). I agree "optimization" is misleading. "cleanup" might be a better wording. > > CC: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > > CC: linux-mm@xxxxxxxxx > > Signed-off-by: Sergei Trofimovich <slyfox@xxxxxxxxxx> > > Acked-by: Vlastimil Babka <vbabka@xxxxxxx> > > > --- > > mm/page_owner.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/mm/page_owner.c b/mm/page_owner.c > > index 63e4ecaba97b..7147fd34a948 100644 > > --- a/mm/page_owner.c > > +++ b/mm/page_owner.c > > @@ -140,14 +140,14 @@ void __reset_page_owner(struct page *page, unsigned int order) > > { > > int i; > > struct page_ext *page_ext; > > - depot_stack_handle_t handle = 0; > > + depot_stack_handle_t handle; > > struct page_owner *page_owner; > > > > - handle = save_stack(GFP_NOWAIT | __GFP_NOWARN); > > - > > page_ext = lookup_page_ext(page); > > if (unlikely(!page_ext)) > > return; > > + > > + handle = save_stack(GFP_NOWAIT | __GFP_NOWARN); > > for (i = 0; i < (1 << order); i++) { > > __clear_bit(PAGE_EXT_OWNER_ALLOCATED, &page_ext->flags); > > page_owner = get_page_owner(page_ext); > > > -- Sergei