|
@@ -1078,7 +1078,7 @@ struct page *follow_trans_huge_pmd(struct vm_area_struct *vma,
|
|
|
goto out;
|
|
|
|
|
|
page = pmd_page(*pmd);
|
|
|
- VM_BUG_ON_PAGE(!PageHead(page), page);
|
|
|
+ VM_BUG_ON_PAGE(!PageHead(page) && !is_zone_device_page(page), page);
|
|
|
if (flags & FOLL_TOUCH)
|
|
|
touch_pmd(vma, addr, pmd);
|
|
|
if ((flags & FOLL_MLOCK) && (vma->vm_flags & VM_LOCKED)) {
|
|
@@ -1116,7 +1116,7 @@ struct page *follow_trans_huge_pmd(struct vm_area_struct *vma,
|
|
|
}
|
|
|
skip_mlock:
|
|
|
page += (addr & ~HPAGE_PMD_MASK) >> PAGE_SHIFT;
|
|
|
- VM_BUG_ON_PAGE(!PageCompound(page), page);
|
|
|
+ VM_BUG_ON_PAGE(!PageCompound(page) && !is_zone_device_page(page), page);
|
|
|
if (flags & FOLL_GET)
|
|
|
get_page(page);
|
|
|
|