Page MenuHomeFreeBSD

D22405.id64485.diff
No OneTemporary

D22405.id64485.diff

Index: head/sys/vm/vm_map.c
===================================================================
--- head/sys/vm/vm_map.c
+++ head/sys/vm/vm_map.c
@@ -2469,17 +2469,16 @@
vm_map_unlock(map);
return (KERN_PROTECTION_FAILURE);
}
- if ((entry->eflags & MAP_ENTRY_IN_TRANSITION) != 0)
- in_tran = entry;
+ if ((current->eflags & MAP_ENTRY_IN_TRANSITION) != 0)
+ in_tran = current;
}
/*
- * Postpone the operation until all in transition map entries
- * are stabilized. In-transition entry might already have its
- * pages wired and wired_count incremented, but
- * MAP_ENTRY_USER_WIRED flag not yet set, and visible to other
- * threads because the map lock is dropped. In this case we
- * would miss our call to vm_fault_copy_entry().
+ * Postpone the operation until all in-transition map entries have
+ * stabilized. An in-transition entry might already have its pages
+ * wired and wired_count incremented, but not yet have its
+ * MAP_ENTRY_USER_WIRED flag set. In which case, we would fail to call
+ * vm_fault_copy_entry() in the final loop below.
*/
if (in_tran != NULL) {
in_tran->eflags |= MAP_ENTRY_NEEDS_WAKEUP;

File Metadata

Mime Type
text/plain
Expires
Sat, Feb 21, 11:17 AM (10 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28921838
Default Alt Text
D22405.id64485.diff (1 KB)

Event Timeline