|
@@ -1197,14 +1197,16 @@ static struct page *new_vma_page(struct page *page, unsigned long private, int *
|
|
break;
|
|
break;
|
|
vma = vma->vm_next;
|
|
vma = vma->vm_next;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if (PageHuge(page)) {
|
|
|
|
+ if (vma)
|
|
|
|
+ return alloc_huge_page_noerr(vma, address, 1);
|
|
|
|
+ else
|
|
|
|
+ return NULL;
|
|
|
|
+ }
|
|
/*
|
|
/*
|
|
- * queue_pages_range() confirms that @page belongs to some vma,
|
|
|
|
- * so vma shouldn't be NULL.
|
|
|
|
|
|
+ * if !vma, alloc_page_vma() will use task or system default policy
|
|
*/
|
|
*/
|
|
- BUG_ON(!vma);
|
|
|
|
-
|
|
|
|
- if (PageHuge(page))
|
|
|
|
- return alloc_huge_page_noerr(vma, address, 1);
|
|
|
|
return alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, address);
|
|
return alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, address);
|
|
}
|
|
}
|
|
#else
|
|
#else
|