Page MenuHomeFreeBSD

D17635.id49401.diff
No OneTemporary

D17635.id49401.diff

Index: sys/vm/vm_map.c
===================================================================
--- sys/vm/vm_map.c
+++ sys/vm/vm_map.c
@@ -1665,6 +1665,8 @@
vm_map_merged_neighbor_dispose(vm_map_t map, vm_map_entry_t entry)
{
+ vm_map_entry_unlink(map, entry);
+
/*
* If the backing object is a vnode object,
* vm_object_deallocate() calls vrele().
@@ -1710,20 +1712,15 @@
prev = entry->prev;
if (prev != &map->header &&
vm_map_mergeable_neighbors(prev, entry)) {
- vm_map_entry_unlink(map, prev);
entry->start = prev->start;
entry->offset = prev->offset;
- if (entry->prev != &map->header)
- vm_map_entry_resize_free(map, entry->prev);
vm_map_merged_neighbor_dispose(map, prev);
}
next = entry->next;
if (next != &map->header &&
vm_map_mergeable_neighbors(entry, next)) {
- vm_map_entry_unlink(map, next);
entry->end = next->end;
- vm_map_entry_resize_free(map, entry);
vm_map_merged_neighbor_dispose(map, next);
}
}
@@ -3916,13 +3913,14 @@
stack_entry->offset,
(vm_size_t)(stack_entry->end - stack_entry->start),
(vm_size_t)grow_amount, cred != NULL)) {
+ stack_entry->end += grow_amount;
+ map->size += grow_amount;
if (gap_entry->start + grow_amount == gap_entry->end)
vm_map_entry_delete(map, gap_entry);
- else
+ else {
gap_entry->start += grow_amount;
- stack_entry->end += grow_amount;
- map->size += grow_amount;
- vm_map_entry_resize_free(map, stack_entry);
+ vm_map_entry_resize_free(map, stack_entry);
+ }
rv = KERN_SUCCESS;
} else
rv = KERN_FAILURE;

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 15, 12:41 PM (18 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28741370
Default Alt Text
D17635.id49401.diff (1 KB)

Event Timeline