xen/balloon: mark inflated pages PG_offline
[linux-2.6-microblaze.git] / mm / memory-failure.c
index 831be5f..fc8b517 100644 (file)
@@ -1825,19 +1825,17 @@ static int soft_offline_in_use_page(struct page *page, int flags)
        struct page *hpage = compound_head(page);
 
        if (!PageHuge(page) && PageTransHuge(hpage)) {
-               lock_page(hpage);
-               if (!PageAnon(hpage) || unlikely(split_huge_page(hpage))) {
-                       unlock_page(hpage);
-                       if (!PageAnon(hpage))
+               lock_page(page);
+               if (!PageAnon(page) || unlikely(split_huge_page(page))) {
+                       unlock_page(page);
+                       if (!PageAnon(page))
                                pr_info("soft offline: %#lx: non anonymous thp\n", page_to_pfn(page));
                        else
                                pr_info("soft offline: %#lx: thp split failed\n", page_to_pfn(page));
-                       put_hwpoison_page(hpage);
+                       put_hwpoison_page(page);
                        return -EBUSY;
                }
-               unlock_page(hpage);
-               get_hwpoison_page(page);
-               put_hwpoison_page(hpage);
+               unlock_page(page);
        }
 
        /*