|
@@ -1257,6 +1257,10 @@ struct page *follow_trans_huge_pmd(struct vm_area_struct *vma,
|
|
if (flags & FOLL_WRITE && !pmd_write(*pmd))
|
|
if (flags & FOLL_WRITE && !pmd_write(*pmd))
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
|
|
+ /* Avoid dumping huge zero page */
|
|
|
|
+ if ((flags & FOLL_DUMP) && is_huge_zero_pmd(*pmd))
|
|
|
|
+ return ERR_PTR(-EFAULT);
|
|
|
|
+
|
|
page = pmd_page(*pmd);
|
|
page = pmd_page(*pmd);
|
|
VM_BUG_ON(!PageHead(page));
|
|
VM_BUG_ON(!PageHead(page));
|
|
if (flags & FOLL_TOUCH) {
|
|
if (flags & FOLL_TOUCH) {
|