• Wu Fengguang's avatar
    HWPOISON: check and isolate corrupted free pages v2 · 2a7684a2
    Wu Fengguang authored
    If memory corruption hits the free buddy pages, we can safely ignore them.
    No one will access them until page allocation time, then prep_new_page()
    will automatically check and isolate PG_hwpoison page for us (for 0-order
    allocation).
    
    This patch expands prep_new_page() to check every component page in a high
    order page allocation, in order to completely stop PG_hwpoison pages from
    being recirculated.
    
    Note that the common case -- only allocating a single page, doesn't
    do any more work than before. Allocating > order 0 does a bit more work,
    but that's relatively uncommon.
    
    This simple implementation may drop some innocent neighbor pages, hopefully
    it is not a big problem because the event should be rare enough.
    
    This patch adds some runtime costs to high order page users.
    
    [AK: Improved description]
    
    v2: Andi Kleen:
    Port to -mm code
    Move check into separate function.
    Don't dump stack in bad_pages for hwpoisoned pages.
    Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
    Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
    2a7684a2
page_alloc.c 135 KB