On Wed, Sep 25, 2019 at 04:30:50PM +0200, Vlastimil Babka wrote: > As noted by Kirill, commit 7e2f2a0cd17c ("mm, page_owner: record page owner for > each subpage") has introduced an off-by-one error in __set_page_owner_handle() > when looking up page_ext for subpages. As a result, the head page page_owner > info is set twice, while for the last tail page, it's not set at all. > > Fix this and also make the code more efficient by advancing the page_ext > pointer we already have, instead of calling lookup_page_ext() for each subpage. > Since the full size of struct page_ext is not known at compile time, we can't > use a simple page_ext++ statement, so introduce a page_ext_next() inline > function for that. > > Reported-by: Kirill A. Shutemov <kirill@xxxxxxxxxxxxx> > Fixes: 7e2f2a0cd17c ("mm, page_owner: record page owner for each subpage") > Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx> Acked-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> -- Kirill A. Shutemov