Skip to content
  • Vlastimil Babka's avatar
    mm, page_owner: fix off-by-one error in __set_page_owner_handle() · 5556cfe8
    Vlastimil Babka authored
    Patch series "followups to debug_pagealloc improvements through
    page_owner", v3.
    
    These are followups to [1] which made it to Linus meanwhile.  Patches 1
    and 3 are based on Kirill's review, patch 2 on KASAN request [2].  It
    would be nice if all of this made it to 5.4 with [1] already there (or
    at least Patch 1).
    
    This patch (of 3):
    
    As noted by Kirill, commit 7e2f2a0c ("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 functi...
    5556cfe8