Page MenuHomeFreeBSD

D13155.id35453.diff
No OneTemporary

D13155.id35453.diff

Index: sys/vm/vm_map.c
===================================================================
--- sys/vm/vm_map.c
+++ sys/vm/vm_map.c
@@ -1496,7 +1496,7 @@
vm_size_t length, vm_offset_t max_addr, int find_space,
vm_prot_t prot, vm_prot_t max, int cow)
{
- vm_offset_t alignment, initial_addr, start;
+ vm_offset_t alignment, initial_addr, prev_start, start;
int result;
KASSERT((cow & (MAP_STACK_GROWS_DOWN | MAP_STACK_GROWS_UP)) == 0 ||
@@ -1512,6 +1512,7 @@
alignment = 0;
initial_addr = *addr;
again:
+ result = KERN_SUCCESS;
start = initial_addr;
vm_map_lock(map);
do {
@@ -1543,6 +1544,8 @@
start = *addr;
}
+ if (result != KERN_SUCCESS && prev_start == start)
+ break;
if ((cow & (MAP_STACK_GROWS_DOWN | MAP_STACK_GROWS_UP)) != 0) {
result = vm_map_stack_locked(map, start, length,
sgrowsiz, prot, max, cow);
@@ -1550,6 +1553,7 @@
result = vm_map_insert(map, object, offset, start,
start + length, prot, max, cow);
}
+ prev_start = start;
} while (result == KERN_NO_SPACE && find_space != VMFS_NO_SPACE &&
find_space != VMFS_ANY_SPACE);
vm_map_unlock(map);

File Metadata

Mime Type
text/plain
Expires
Mon, Sep 7, 1:29 PM (2 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38469065
Default Alt Text
D13155.id35453.diff (1 KB)

Event Timeline