aboutsummaryrefslogtreecommitdiffstats
path: root/mm/memory-failure.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/memory-failure.c')
-rw-r--r--mm/memory-failure.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index d9359b770cd9..501820c815b3 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -1187,10 +1187,10 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
1187 * The check (unnecessarily) ignores LRU pages being isolated and 1187 * The check (unnecessarily) ignores LRU pages being isolated and
1188 * walked by the page reclaim code, however that's not a big loss. 1188 * walked by the page reclaim code, however that's not a big loss.
1189 */ 1189 */
1190 if (!PageHuge(p) && !PageTransTail(p)) { 1190 if (!PageHuge(p)) {
1191 if (!PageLRU(p)) 1191 if (!PageLRU(hpage))
1192 shake_page(p, 0); 1192 shake_page(hpage, 0);
1193 if (!PageLRU(p)) { 1193 if (!PageLRU(hpage)) {
1194 /* 1194 /*
1195 * shake_page could have turned it free. 1195 * shake_page could have turned it free.
1196 */ 1196 */
@@ -1777,12 +1777,12 @@ int soft_offline_page(struct page *page, int flags)
1777 } else if (ret == 0) { /* for free pages */ 1777 } else if (ret == 0) { /* for free pages */
1778 if (PageHuge(page)) { 1778 if (PageHuge(page)) {
1779 set_page_hwpoison_huge_page(hpage); 1779 set_page_hwpoison_huge_page(hpage);
1780 dequeue_hwpoisoned_huge_page(hpage); 1780 if (!dequeue_hwpoisoned_huge_page(hpage))
1781 atomic_long_add(1 << compound_order(hpage), 1781 atomic_long_add(1 << compound_order(hpage),
1782 &num_poisoned_pages); 1782 &num_poisoned_pages);
1783 } else { 1783 } else {
1784 SetPageHWPoison(page); 1784 if (!TestSetPageHWPoison(page))
1785 atomic_long_inc(&num_poisoned_pages); 1785 atomic_long_inc(&num_poisoned_pages);
1786 } 1786 }
1787 } 1787 }
1788 unset_migratetype_isolate(page, MIGRATE_MOVABLE); 1788 unset_migratetype_isolate(page, MIGRATE_MOVABLE);