• Hugh Dickins's avatar
    [PATCH] Bad page state mapcount · 8d80857d
    Hugh Dickins authored
    A small change to the tests for "Bad page state", to avoid one class of the
    page_remove_rmap BUG reports, giving more information while letting the
    system continue: check page_mapcount (_mapcount != -1) rather than
    page_mapped (_mapcount >= 0).
    
    And how does _mapcount go bad?  In the case under study, it looks sure now
    that an overheating(?) Pentium III sometimes gets confused by a pair of
    instructions in the no-buddy-bitmap __free_pages_bulk, and clears the
    PG_private bit from the _mapcount field while buddying around - changing
    PG_private value changes the bit cleared from _mapcount.  Bad page state
    mapcount:-4096 would have tracked this down much sooner, and will be
    recognizable if other cpus show the same aberrant reaction to 2.6.11.
    
    The page_remove_rmap BUG does need to be replaced by more permissive and
    informative handling, but I'm not yet ready to to finalize such a patch.
    
    Please admit Colin Harrison to the Order of the Iridescent Penguin, for his
    tireless testing.
    Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    8d80857d
page_alloc.c 53.6 KB