Page MenuHomeFreeBSD

D55536.id172781.diff
No OneTemporary

D55536.id172781.diff

diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -656,8 +656,13 @@
for (i = 0; i < npages; i++) {
vm_fault_populate_check_page(&m[i]);
vm_fault_dirty(fs, &m[i]);
+ if (psind > 0 && m[i].dirty != VM_PAGE_BITS_ALL &&
+ (fs->prot & VM_PROT_WRITE) != 0)
+ vm_page_dirty(&m[i]);
}
VM_OBJECT_WUNLOCK(fs->first_object);
+ if (psind > 0 && (fs->prot & VM_PROT_WRITE) != 0)
+ fs->fault_type |= VM_PROT_WRITE;
rv = pmap_enter(fs->map->pmap, vaddr, m, fs->prot, fs->fault_type |
(fs->wired ? PMAP_ENTER_WIRED : 0), psind);

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 8, 8:41 AM (5 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29038809
Default Alt Text
D55536.id172781.diff (609 B)

Event Timeline