summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-02-05 06:33:18 +0000
committeralc <alc@FreeBSD.org>2004-02-05 06:33:18 +0000
commitcabea246201abda4a7da1d0299c2f5f505e885b2 (patch)
tree47ef091fd818be21efc3b36ba56353d8442dbb24
parent12c02b35e97ff2d4f5bf34a44e06193b4315e534 (diff)
downloadFreeBSD-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.c2
-rw-r--r--sys/vm/vm_map.c4
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);
OpenPOWER on IntegriCloud