- Locking for the per-process resource limits structure has eliminated

the need for Giant in vm_map_growstack().
 - Use the proc * that is passed to vm_map_growstack() rather than
   curthread->td_proc.
This commit is contained in:
alc 2004-02-05 06:33:18 +00:00
parent 46cbb4cb18
commit 2b4d6e6c94
2 changed files with 1 additions and 5 deletions

View File

@ -236,9 +236,7 @@ RetryFault:;
(fault_flags & VM_FAULT_WIRE_MASK) != VM_FAULT_USER_WIRE) {
if (growstack && result == KERN_INVALID_ADDRESS &&
map != kernel_map && curproc != NULL) {
mtx_lock(&Giant);
result = vm_map_growstack(curproc, vaddr);
mtx_unlock(&Giant);
if (result != KERN_SUCCESS)
return (KERN_FAILURE);
growstack = FALSE;

View File

@ -2573,12 +2573,10 @@ vm_map_growstack(struct proc *p, vm_offset_t addr)
rlim_t stacklim, vmemlim;
int is_procstack, rv;
GIANT_REQUIRED;
Retry:
PROC_LOCK(p);
stacklim = lim_cur(p, RLIMIT_STACK);
vmemlim = lim_cur(curthread->td_proc, RLIMIT_VMEM);
vmemlim = lim_cur(p, RLIMIT_VMEM);
PROC_UNLOCK(p);
vm_map_lock_read(map);