mm/hwpoison: fix race between soft_offline_page and unpoison_memory
[firefly-linux-kernel-4.4.55.git] / mm / memory-failure.c
index 393ea13b07546e47b45292fccd95bec6e1a6fc66..b0664c23838b8191ad4d0bd4463bb13524a147e0 100644 (file)
@@ -1681,8 +1681,6 @@ static int __soft_offline_page(struct page *page, int flags)
                inc_zone_page_state(page, NR_ISOLATED_ANON +
                                        page_is_file_cache(page));
                list_add(&page->lru, &pagelist);
-               if (!TestSetPageHWPoison(page))
-                       num_poisoned_pages_dec();
                ret = migrate_pages(&pagelist, new_page, NULL, MPOL_MF_MOVE_ALL,
                                        MIGRATE_SYNC, MR_MEMORY_FAILURE);
                if (ret) {
@@ -1697,8 +1695,6 @@ static int __soft_offline_page(struct page *page, int flags)
                                pfn, ret, page->flags);
                        if (ret > 0)
                                ret = -EIO;
-                       if (TestClearPageHWPoison(page))
-                               num_poisoned_pages_dec();
                }
        } else {
                pr_info("soft offline: %#lx: isolation failed: %d, page count %d, type %lx\n",