diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 22a63879a3d5cc80bb7a814b1e5d7ab2d95d6780..28bd5d6ed1bf9e3d9bc0a299aa60b5d34f517ef9 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1720,10 +1720,9 @@ int unpoison_memory(unsigned long pfn) static DEFINE_RATELIMIT_STATE(unpoison_rs, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST); - if (!pfn_valid(pfn)) - return -ENXIO; - - p = pfn_to_page(pfn); + p = pfn_to_online_page(pfn); + if (!p) + return -EIO; page = compound_head(p); if (!PageHWPoison(p)) {