|
@@ -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);
|