diff options
Diffstat (limited to 'sys/vm/vm_map.c')
-rw-r--r-- | sys/vm/vm_map.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 752354a..8493478 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -318,6 +318,7 @@ static void vmspace_container_reset(struct proc *p) { +#ifdef RACCT PROC_LOCK(p); racct_set(p, RACCT_DATA, 0); racct_set(p, RACCT_STACK, 0); @@ -325,6 +326,7 @@ vmspace_container_reset(struct proc *p) racct_set(p, RACCT_MEMLOCK, 0); racct_set(p, RACCT_VMEM, 0); PROC_UNLOCK(p); +#endif } static inline void @@ -2708,7 +2710,15 @@ vm_map_entry_delete(vm_map_t map, vm_map_entry_t entry) ((object->flags & (OBJ_NOSPLIT|OBJ_ONEMAPPING)) == OBJ_ONEMAPPING || object == kernel_object || object == kmem_object)) { vm_object_collapse(object); - vm_object_page_remove(object, offidxstart, offidxend, FALSE); + + /* + * The option OBJPR_NOTMAPPED can be passed here + * because vm_map_delete() already performed + * pmap_remove() on the only mapping to this range + * of pages. + */ + vm_object_page_remove(object, offidxstart, offidxend, + OBJPR_NOTMAPPED); if (object->type == OBJT_SWAP) swap_pager_freespace(object, offidxstart, count); if (offidxend >= object->size && @@ -3297,7 +3307,9 @@ vm_map_growstack(struct proc *p, vm_offset_t addr) #ifdef notyet uint64_t limit; #endif +#ifdef RACCT int error; +#endif Retry: PROC_LOCK(p); @@ -3396,6 +3408,7 @@ Retry: vm_map_unlock_read(map); return (KERN_NO_SPACE); } +#ifdef RACCT PROC_LOCK(p); if (is_procstack && racct_set(p, RACCT_STACK, ctob(vm->vm_ssize) + grow_amount)) { @@ -3404,6 +3417,7 @@ Retry: return (KERN_NO_SPACE); } PROC_UNLOCK(p); +#endif /* Round up the grow amount modulo SGROWSIZ */ grow_amount = roundup (grow_amount, sgrowsiz); @@ -3427,6 +3441,7 @@ Retry: rv = KERN_NO_SPACE; goto out; } +#ifdef RACCT PROC_LOCK(p); if (racct_set(p, RACCT_VMEM, map->size + grow_amount)) { PROC_UNLOCK(p); @@ -3435,6 +3450,7 @@ Retry: goto out; } PROC_UNLOCK(p); +#endif if (vm_map_lock_upgrade(map)) goto Retry; @@ -3534,6 +3550,7 @@ Retry: } out: +#ifdef RACCT if (rv != KERN_SUCCESS) { PROC_LOCK(p); error = racct_set(p, RACCT_VMEM, map->size); @@ -3542,6 +3559,7 @@ out: KASSERT(error == 0, ("decreasing RACCT_STACK failed")); PROC_UNLOCK(p); } +#endif return (rv); } |