diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 6121b57bbe966735a6c44ae1f77854f2cec7c74b..6f978218c2c808b7dad3e0c184cc44ec35f2585d 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -907,7 +907,7 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, */ pte = huge_pte_offset(mm, vaddr & HPAGE_MASK); - if (!pte || pte_none(*pte)) { + if (!pte || pte_none(*pte) || (write && !pte_write(*pte))) { int ret; spin_unlock(&mm->page_table_lock);