On Tue, Dec 17, 2024 at 11:42:02AM +0800, Qi Zheng wrote: > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 497035a78849b..11829860ec05e 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -3064,6 +3064,14 @@ static inline void pagetable_dtor(struct ptdesc > *ptdesc) > lruvec_stat_sub_folio(folio, NR_PAGETABLE); > } > > +static inline void pagetable_dtor_free(void *table) > +{ > + struct ptdesc *ptdesc = page_ptdesc((struct page *)table); > + > + pagetable_dtor(ptdesc); > + pagetable_dtor(ptdesc); > +} Right, that works, except you have whitespace issues and I think you'll find it'll work better if you don't call _dtor twice but instead replace that last one with _free() :-)