Page MenuHomeFreeBSD

D41475.diff
No OneTemporary

D41475.diff

diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -1413,7 +1413,9 @@
KASSERT(entry->end < root->end,
("%s: clip_start not within entry", __func__));
vm_map_splay_findprev(root, &llist);
- root->offset += entry->end - root->start;
+ if ((root->eflags & (MAP_ENTRY_STACK_GAP_DN |
+ MAP_ENTRY_STACK_GAP_UP)) == 0)
+ root->offset += entry->end - root->start;
root->start = entry->end;
max_free_left = vm_map_splay_merge_pred(header, entry, llist);
max_free_right = root->max_free = vm_size_max(
@@ -1429,7 +1431,9 @@
KASSERT(entry->end == root->end,
("%s: clip_start not within entry", __func__));
vm_map_splay_findnext(root, &rlist);
- entry->offset += entry->start - root->start;
+ if ((entry->eflags & (MAP_ENTRY_STACK_GAP_DN |
+ MAP_ENTRY_STACK_GAP_UP)) == 0)
+ entry->offset += entry->start - root->start;
root->end = entry->start;
max_free_left = root->max_free = vm_size_max(
vm_map_splay_merge_left(header, root, llist),
@@ -1463,6 +1467,8 @@
vm_map_splay_findnext(root, &rlist);
if (op == UNLINK_MERGE_NEXT) {
rlist->start = root->start;
+ MPASS((rlist->eflags & (MAP_ENTRY_STACK_GAP_DN |
+ MAP_ENTRY_STACK_GAP_UP) == 0);
rlist->offset = root->offset;
}
if (llist != header) {
@@ -3103,7 +3109,8 @@
entry = vm_map_entry_succ(entry)) {
vm_offset_t useEnd, useStart;
- if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) != 0)
+ if ((entry->eflags & (MAP_ENTRY_IS_SUB_MAP |
+ MAP_ENTRY_GUARD)) != 0)
continue;
/*

File Metadata

Mime Type
text/plain
Expires
Wed, Feb 12, 1:42 AM (16 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16604213
Default Alt Text
D41475.diff (1 KB)

Event Timeline