diff options
author | Mark Brown <broonie@linaro.org> | 2014-01-14 14:14:47 +0000 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-01-14 14:14:47 +0000 |
commit | 13ea3300100ec3461560b1e061033cd167333a86 (patch) | |
tree | c60a016a06c488adada6959516e2a2de96d6d7d3 /mm/memory-failure.c | |
parent | b7ed6b88b2a5e961eeb939ef637a3cbb435a23a7 (diff) | |
parent | 68e67d97e1f91ed11e041b67f3a1336f518c608f (diff) |
Merge branch 'topic/rcar' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi into spi-rspi
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 b7c171602ba..db08af92c6f 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1505,10 +1505,16 @@ static int soft_offline_huge_page(struct page *page, int flags) if (ret > 0) ret = -EIO; } else { - set_page_hwpoison_huge_page(hpage); - dequeue_hwpoisoned_huge_page(hpage); - atomic_long_add(1 << compound_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); + } } return ret; } |