HWPOISON: check and isolate corrupted free pages v2
authorWu Fengguang <fengguang.wu@intel.com>
Wed, 16 Sep 2009 09:50:12 +0000 (11:50 +0200)
committerAndi Kleen <ak@linux.intel.com>
Wed, 16 Sep 2009 09:50:12 +0000 (11:50 +0200)
commit2a7684a23e9c263c2a1e8b2c0027ad1836a0f9df
treeb9769d2f391d76d9c84c687aa771d36cc539025e
parent888b9f7c58ebe8303bad817cd554df887a683957
HWPOISON: check and isolate corrupted free pages v2

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: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
mm/page_alloc.c