diff options
Diffstat (limited to 'mm/memory-failure.c')
-rw-r--r-- | mm/memory-failure.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 8da0334b9ca0..d9cc6606f409 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
@@ -1730,6 +1730,8 @@ static int soft_offline_huge_page(struct page *page, int flags) | |||
1730 | if (!ret) { | 1730 | if (!ret) { |
1731 | if (set_hwpoison_free_buddy_page(page)) | 1731 | if (set_hwpoison_free_buddy_page(page)) |
1732 | num_poisoned_pages_inc(); | 1732 | num_poisoned_pages_inc(); |
1733 | else | ||
1734 | ret = -EBUSY; | ||
1733 | } | 1735 | } |
1734 | } | 1736 | } |
1735 | return ret; | 1737 | return ret; |
@@ -1854,11 +1856,8 @@ static int soft_offline_in_use_page(struct page *page, int flags) | |||
1854 | 1856 | ||
1855 | static int soft_offline_free_page(struct page *page) | 1857 | static int soft_offline_free_page(struct page *page) |
1856 | { | 1858 | { |
1857 | int rc = 0; | 1859 | int rc = dissolve_free_huge_page(page); |
1858 | struct page *head = compound_head(page); | ||
1859 | 1860 | ||
1860 | if (PageHuge(head)) | ||
1861 | rc = dissolve_free_huge_page(page); | ||
1862 | if (!rc) { | 1861 | if (!rc) { |
1863 | if (set_hwpoison_free_buddy_page(page)) | 1862 | if (set_hwpoison_free_buddy_page(page)) |
1864 | num_poisoned_pages_inc(); | 1863 | num_poisoned_pages_inc(); |