diff options
author | alc <alc@FreeBSD.org> | 2004-02-05 06:33:18 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2004-02-05 06:33:18 +0000 |
commit | cabea246201abda4a7da1d0299c2f5f505e885b2 (patch) | |
tree | 47ef091fd818be21efc3b36ba56353d8442dbb24 | |
parent | 12c02b35e97ff2d4f5bf34a44e06193b4315e534 (diff) | |
download | FreeBSD-src-cabea246201abda4a7da1d0299c2f5f505e885b2.zip FreeBSD-src-cabea246201abda4a7da1d0299c2f5f505e885b2.tar.gz |
- 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.
-rw-r--r-- | sys/vm/vm_fault.c | 2 | ||||
-rw-r--r-- | sys/vm/vm_map.c | 4 |
2 files changed, 1 insertions, 5 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 567926e..fe33cbf 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -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; diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 5c93a84..8c5a502 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -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); |