diff --git a/mm/memory-failure.c b/mm/memory-failure.c index f5948b0a51ab..3d75a25d9a22 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -2744,10 +2744,13 @@ int soft_offline_page(unsigned long pfn, int flags) if (ret > 0) { ret = soft_offline_in_use_page(page); } else if (ret == 0) { - if (!page_handle_poison(page, true, false) && try_again) { - try_again = false; - flags &= ~MF_COUNT_INCREASED; - goto retry; + if (!page_handle_poison(page, true, false)) { + if (try_again) { + try_again = false; + flags &= ~MF_COUNT_INCREASED; + goto retry; + } + ret = -EBUSY; } }