X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=mm%2Fmemory-failure.c;h=501820c815b335b017ea87cf3dd3f1a0d034bd98;hb=c40b7b064f6159df3a080595a498613d08206e59;hp=22e0f270e4f7f2ae388156b8a8469df48d99c822;hpb=09789e5de18e4e442870b2d700831f5cb802eb05;p=cascardo%2Flinux.git diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 22e0f270e4f7..501820c815b3 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1777,12 +1777,12 @@ int soft_offline_page(struct page *page, int flags) } else if (ret == 0) { /* for free pages */ if (PageHuge(page)) { set_page_hwpoison_huge_page(hpage); - dequeue_hwpoisoned_huge_page(hpage); - atomic_long_add(1 << compound_order(hpage), + if (!dequeue_hwpoisoned_huge_page(hpage)) + atomic_long_add(1 << compound_order(hpage), &num_poisoned_pages); } else { - SetPageHWPoison(page); - atomic_long_inc(&num_poisoned_pages); + if (!TestSetPageHWPoison(page)) + atomic_long_inc(&num_poisoned_pages); } } unset_migratetype_isolate(page, MIGRATE_MOVABLE);