diff options
author | Mark Brown <broonie@linaro.org> | 2014-01-27 14:57:25 +0000 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-01-27 14:57:25 +0000 |
commit | 51ad557e21b8713f3abc286c14bca4ed01b8e56d (patch) | |
tree | 357ddab632db8023c5b534309269b20fd50346e3 /mm/memory-failure.c | |
parent | 9d069f462c65190c5116e750e7b376793cd32a15 (diff) | |
parent | 020abbc91120ddf052e2c303a8c598c3be4dc459 (diff) |
Merge tag 'v3.10.28' into linux-linaro-lsklsk-14.01
This is the 3.10.28 stable release
Diffstat (limited to 'mm/memory-failure.c')
-rw-r--r-- | mm/memory-failure.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 6a7f9cab4dd..7e3601ce51c 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1499,10 +1499,16 @@ static int soft_offline_huge_page(struct page *page, int flags) pr_info("soft offline: %#lx: migration failed %d, type %lx\n", pfn, ret, page->flags); } else { - set_page_hwpoison_huge_page(hpage); - dequeue_hwpoisoned_huge_page(hpage); - atomic_long_add(1 << compound_trans_order(hpage), - &num_poisoned_pages); + /* overcommit hugetlb page will be freed to buddy */ + if (PageHuge(page)) { + set_page_hwpoison_huge_page(hpage); + dequeue_hwpoisoned_huge_page(hpage); + atomic_long_add(1 << compound_order(hpage), + &num_poisoned_pages); + } else { + SetPageHWPoison(page); + atomic_long_inc(&num_poisoned_pages); + } } /* keep elevated page count for bad page */ return ret; |