Currently we call shake_page and then check whether the page is Buddy
because shake_page calls drain_all_pages, which sends pcp-pages back to
the buddy freelists, so we could have a chance to handle free pages.

get_hwpoison_page already calls drain_all_pages, and we do call
get_hwpoison_page right before coming here, so we should be on the safe
side.

Link: https://lkml.kernel.org/r/20200908075626.11976-6-osalva...@suse.de
Signed-off-by: Oscar Salvador <osalva...@suse.de>
Cc: Michal Hocko <mho...@kernel.org>
Cc: Naoya Horiguchi <naoya.horigu...@nec.com>
Cc: Oscar Salvador <osalva...@suse.com>
Cc: Qian Cai <c...@lca.pw>
Cc: Tony Luck <tony.l...@intel.com>
Signed-off-by: Andrew Morton <a...@linux-foundation.org>
Signed-off-by: Stephen Rothwell <s...@canb.auug.org.au>
---
 mm/memory-failure.c | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index 4468c1eb5027..fbe174d54fad 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -1421,18 +1421,6 @@ int memory_failure(unsigned long pfn, int flags)
         * walked by the page reclaim code, however that's not a big loss.
         */
        shake_page(p, 0);
-       /* shake_page could have turned it free. */
-       if (!PageLRU(p) && is_free_buddy_page(p)) {
-               if (!take_page_off_buddy(p))
-                       res = -EBUSY;
-
-               if (flags & MF_COUNT_INCREASED)
-                       action_result(pfn, MF_MSG_BUDDY, res ? MF_FAILED : 
MF_RECOVERED);
-               else
-                       action_result(pfn, MF_MSG_BUDDY_2ND, res ? MF_FAILED : 
MF_RECOVERED);
-
-               return res;
-       }
 
        lock_page(p);
 
-- 
2.26.2

Reply via email to