|
@@ -877,7 +877,7 @@ struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long addr,
|
|
|
*/
|
|
|
WARN_ONCE(flags & FOLL_COW, "mm: In follow_devmap_pmd with FOLL_COW set");
|
|
|
|
|
|
- if (flags & FOLL_WRITE && !pmd_write(*pmd))
|
|
|
+ if (!pmd_access_permitted(*pmd, flags & FOLL_WRITE))
|
|
|
return NULL;
|
|
|
|
|
|
if (pmd_present(*pmd) && pmd_devmap(*pmd))
|
|
@@ -1393,7 +1393,7 @@ out_unlock:
|
|
|
*/
|
|
|
static inline bool can_follow_write_pmd(pmd_t pmd, unsigned int flags)
|
|
|
{
|
|
|
- return pmd_write(pmd) ||
|
|
|
+ return pmd_access_permitted(pmd, WRITE) ||
|
|
|
((flags & FOLL_FORCE) && (flags & FOLL_COW) && pmd_dirty(pmd));
|
|
|
}
|
|
|
|