|
@@ -3172,7 +3172,13 @@ int dequeue_hwpoisoned_huge_page(struct page *hpage)
|
|
|
|
|
|
spin_lock(&hugetlb_lock);
|
|
|
if (is_hugepage_on_freelist(hpage)) {
|
|
|
- list_del(&hpage->lru);
|
|
|
+ /*
|
|
|
+ * Hwpoisoned hugepage isn't linked to activelist or freelist,
|
|
|
+ * but dangling hpage->lru can trigger list-debug warnings
|
|
|
+ * (this happens when we call unpoison_memory() on it),
|
|
|
+ * so let it point to itself with list_del_init().
|
|
|
+ */
|
|
|
+ list_del_init(&hpage->lru);
|
|
|
set_page_refcounted(hpage);
|
|
|
h->free_huge_pages--;
|
|
|
h->free_huge_pages_node[nid]--;
|