|
@@ -3949,7 +3949,7 @@ static int handle_pte_fault(struct vm_fault *vmf)
|
|
|
if (unlikely(!pte_same(*vmf->pte, entry)))
|
|
|
goto unlock;
|
|
|
if (vmf->flags & FAULT_FLAG_WRITE) {
|
|
|
- if (!pte_access_permitted(entry, WRITE))
|
|
|
+ if (!pte_write(entry))
|
|
|
return do_wp_page(vmf);
|
|
|
entry = pte_mkdirty(entry);
|
|
|
}
|
|
@@ -4014,7 +4014,7 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
|
|
|
|
|
|
/* NUMA case for anonymous PUDs would go here */
|
|
|
|
|
|
- if (dirty && !pud_access_permitted(orig_pud, WRITE)) {
|
|
|
+ if (dirty && !pud_write(orig_pud)) {
|
|
|
ret = wp_huge_pud(&vmf, orig_pud);
|
|
|
if (!(ret & VM_FAULT_FALLBACK))
|
|
|
return ret;
|
|
@@ -4047,7 +4047,7 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
|
|
|
if (pmd_protnone(orig_pmd) && vma_is_accessible(vma))
|
|
|
return do_huge_pmd_numa_page(&vmf, orig_pmd);
|
|
|
|
|
|
- if (dirty && !pmd_access_permitted(orig_pmd, WRITE)) {
|
|
|
+ if (dirty && !pmd_write(orig_pmd)) {
|
|
|
ret = wp_huge_pmd(&vmf, orig_pmd);
|
|
|
if (!(ret & VM_FAULT_FALLBACK))
|
|
|
return ret;
|
|
@@ -4337,7 +4337,7 @@ int follow_phys(struct vm_area_struct *vma,
|
|
|
goto out;
|
|
|
pte = *ptep;
|
|
|
|
|
|
- if (!pte_access_permitted(pte, flags & FOLL_WRITE))
|
|
|
+ if ((flags & FOLL_WRITE) && !pte_write(pte))
|
|
|
goto unlock;
|
|
|
|
|
|
*prot = pgprot_val(pte_pgprot(pte));
|