]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - mm/memory-failure.c
HWPOISON, hugetlb: add free check to dequeue_hwpoison_huge_page()
[net-next-2.6.git] / mm / memory-failure.c
index 757f6b0accfe84d959b7fe5899b5916ad0ed1f14..5c7158a11592582e1bb488da75f3063bd6dd691f 100644 (file)
@@ -698,6 +698,7 @@ static int me_swapcache_clean(struct page *p, unsigned long pfn)
  */
 static int me_huge_page(struct page *p, unsigned long pfn)
 {
+       int res = 0;
        struct page *hpage = compound_head(p);
        /*
         * We can safely recover from error on free or reserved (i.e.
@@ -710,8 +711,9 @@ static int me_huge_page(struct page *p, unsigned long pfn)
         * so there is no race between isolation and mapping/unmapping.
         */
        if (!(page_mapping(hpage) || PageAnon(hpage))) {
-               __isolate_hwpoisoned_huge_page(hpage);
-               return RECOVERED;
+               res = dequeue_hwpoisoned_huge_page(hpage);
+               if (!res)
+                       return RECOVERED;
        }
        return DELAYED;
 }