On Tue, Aug 04, 2020 at 11:39:43AM -0700, John Hubbard wrote: > +static inline int __compound_mapcount(struct page *page) > +{ > + page = compound_head(page); > + return atomic_read(compound_mapcount_ptr(page)) + 1; > +} I'd suggest instead: static inline int head_mapcount(struct page *head) { return atomic_read(compound_mapcount_ptr(head)) + 1; } > +static inline int dump_page_compound_mapcount(struct page *page) > +{ > + if (WARN_ON_ONCE(!PageCompound(page))) > + return 0; > + return __compound_mapcount(page); > } And just dropping this ... it shouldn't be used outside mm/debug.c anyway. Thinking about it, we'll get the hint later that this is not to be trusted when the flags from the page do not include 'head'.