]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - mm/memory-failure.c
mm: hugetlb: soft-offline: dissolve_free_huge_page() return zero on !PageHuge
[linux.git] / mm / memory-failure.c
index 8da0334b9ca011f69e0369267ba62952383f9bd1..d9cc6606f4097e13175a2dd3eb08523a184e1968 100644 (file)
@@ -1730,6 +1730,8 @@ static int soft_offline_huge_page(struct page *page, int flags)
                if (!ret) {
                        if (set_hwpoison_free_buddy_page(page))
                                num_poisoned_pages_inc();
+                       else
+                               ret = -EBUSY;
                }
        }
        return ret;
@@ -1854,11 +1856,8 @@ static int soft_offline_in_use_page(struct page *page, int flags)
 
 static int soft_offline_free_page(struct page *page)
 {
-       int rc = 0;
-       struct page *head = compound_head(page);
+       int rc = dissolve_free_huge_page(page);
 
-       if (PageHuge(head))
-               rc = dissolve_free_huge_page(page);
        if (!rc) {
                if (set_hwpoison_free_buddy_page(page))
                        num_poisoned_pages_inc();