- 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:
parent
12c02b35e9
commit
cabea24620
@ -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;
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user