|
@@ -391,11 +391,11 @@ again:
|
|
if (pmd_protnone(pmd))
|
|
if (pmd_protnone(pmd))
|
|
return hmm_vma_walk_clear(start, end, walk);
|
|
return hmm_vma_walk_clear(start, end, walk);
|
|
|
|
|
|
- if (write_fault && !pmd_write(pmd))
|
|
|
|
|
|
+ if (!pmd_access_permitted(pmd, write_fault))
|
|
return hmm_vma_walk_clear(start, end, walk);
|
|
return hmm_vma_walk_clear(start, end, walk);
|
|
|
|
|
|
pfn = pmd_pfn(pmd) + pte_index(addr);
|
|
pfn = pmd_pfn(pmd) + pte_index(addr);
|
|
- flag |= pmd_write(pmd) ? HMM_PFN_WRITE : 0;
|
|
|
|
|
|
+ flag |= pmd_access_permitted(pmd, WRITE) ? HMM_PFN_WRITE : 0;
|
|
for (; addr < end; addr += PAGE_SIZE, i++, pfn++)
|
|
for (; addr < end; addr += PAGE_SIZE, i++, pfn++)
|
|
pfns[i] = hmm_pfn_t_from_pfn(pfn) | flag;
|
|
pfns[i] = hmm_pfn_t_from_pfn(pfn) | flag;
|
|
return 0;
|
|
return 0;
|