diff --git a/mm/memory-failure.c b/mm/memory-failure.c index b0733374b017d8985fe6586bfc29eb3cfc12e06b..c683704e6878992dd61f5da591d290d5dabd3f4c 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -2559,10 +2559,9 @@ static int __unpoison_memory(unsigned long pfn, bool hw_mf_check) 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; folio = page_folio(p); mutex_lock(&mf_mutex);