On 2/7/20 8:48 PM, Matthew Wilcox wrote: > On Fri, Feb 07, 2020 at 08:44:15PM -0800, Matthew Wilcox wrote: >> From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> >> >> There was no protection against a corrupted struct page having an >> implausible compound_head(). Sanity check that a compound page has >> a head within reach of the maximum allocatable page (this will need >> to be adjusted if one of the plans to allocate 1GB pages comes to >> fruition). In addition, >> >> - Print the mapping pointer using %p insted of %px. The actual value of >> the pointer can be read out of the raw page dump and using %p gives a >> chance to correlate it with an earlier printk of the mapping pointer >> - Print the mapping pointer from the head page, not the tail page >> (the tail ->mapping pointer may be in use for other purposes, eg part >> of a list_head) >> - Print the order of the page for compound pages >> - Dump the raw head page as well as the raw page >> - Print the refcount from the head page, not the tail page >> >> Suggested-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> >> Co-developed-by: John Hubbard <jhubbard@xxxxxxxxxx> >> Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > > John, in comparison to the patch I sent earlier today, this version changes: > > - Reorder the things printed in the compound case so that all the information > which is printed for non-compound pages is printed first > - Removed inconsistent space between "compound_mapcount:" and the value > - Print the refcount of the head page instead of the tail (which was the > point of your patch!) > - Print the mapping of the head instead of the tail > - Don't dump the raw head if the page passed in was the head page > Got it, I've snarfed it into my series, thanks very much! thanks, -- John Hubbard NVIDIA