From f36a0be961e835af2feb682ac43d13f1d081b964 Mon Sep 17 00:00:00 2001 From: kib Date: Mon, 24 Apr 2017 07:52:44 +0000 Subject: MFC r316679: Do not lose dirty bits for removing PROT_WRITE on arm64. --- sys/arm64/arm64/pmap.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'sys/arm64') diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index 500aeb3..6839758 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -2481,6 +2481,11 @@ pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot) sva += L3_SIZE) { l3 = pmap_load(l3p); if (pmap_l3_valid(l3)) { + if ((l3 & ATTR_SW_MANAGED) && + pmap_page_dirty(l3)) { + vm_page_dirty(PHYS_TO_VM_PAGE(l3 & + ~ATTR_MASK)); + } pmap_set(l3p, ATTR_AP(ATTR_AP_RO)); PTE_SYNC(l3p); /* XXX: Use pmap_invalidate_range */ -- cgit v1.1