summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/amd64/trap.c44
-rw-r--r--sys/i386/i386/trap.c44
-rw-r--r--sys/ia64/ia64/trap.c15
-rw-r--r--sys/kern/subr_trap.c44
4 files changed, 49 insertions, 98 deletions
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index d9597dffceb0..5ff51fd037aa 100644
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -743,16 +743,11 @@ trap_pfault(frame, usermode, eva)
* a growable stack region, or if the stack
* growth succeeded.
*/
- if (!grow_stack (p, va)) {
+ if (!grow_stack (p, va))
rv = KERN_FAILURE;
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- goto nogo;
- }
-
- /* Fault in the user page: */
- rv = vm_fault(map, va, ftype,
+ else
+ /* Fault in the user page: */
+ rv = vm_fault(map, va, ftype,
(ftype & VM_PROT_WRITE) ? VM_FAULT_DIRTY
: VM_FAULT_NORMAL);
@@ -864,16 +859,11 @@ trap_pfault(frame, usermode, eva)
* a growable stack region, or if the stack
* growth succeeded.
*/
- if (!grow_stack (p, va)) {
+ if (!grow_stack (p, va))
rv = KERN_FAILURE;
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- goto nogo;
- }
-
- /* Fault in the user page: */
- rv = vm_fault(map, va, ftype,
+ else
+ /* Fault in the user page: */
+ rv = vm_fault(map, va, ftype,
(ftype & VM_PROT_WRITE) ? VM_FAULT_DIRTY
: VM_FAULT_NORMAL);
@@ -1044,17 +1034,13 @@ int trapwrite(addr)
++p->p_lock;
PROC_UNLOCK(p);
- if (!grow_stack (p, va)) {
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- return (1);
- }
-
- /*
- * fault the data page
- */
- rv = vm_fault(&vm->vm_map, va, VM_PROT_WRITE, VM_FAULT_DIRTY);
+ if (!grow_stack (p, va))
+ rv = KERN_FAILURE;
+ else
+ /*
+ * fault the data page
+ */
+ rv = vm_fault(&vm->vm_map, va, VM_PROT_WRITE, VM_FAULT_DIRTY);
PROC_LOCK(p);
--p->p_lock;
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index d9597dffceb0..5ff51fd037aa 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -743,16 +743,11 @@ trap_pfault(frame, usermode, eva)
* a growable stack region, or if the stack
* growth succeeded.
*/
- if (!grow_stack (p, va)) {
+ if (!grow_stack (p, va))
rv = KERN_FAILURE;
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- goto nogo;
- }
-
- /* Fault in the user page: */
- rv = vm_fault(map, va, ftype,
+ else
+ /* Fault in the user page: */
+ rv = vm_fault(map, va, ftype,
(ftype & VM_PROT_WRITE) ? VM_FAULT_DIRTY
: VM_FAULT_NORMAL);
@@ -864,16 +859,11 @@ trap_pfault(frame, usermode, eva)
* a growable stack region, or if the stack
* growth succeeded.
*/
- if (!grow_stack (p, va)) {
+ if (!grow_stack (p, va))
rv = KERN_FAILURE;
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- goto nogo;
- }
-
- /* Fault in the user page: */
- rv = vm_fault(map, va, ftype,
+ else
+ /* Fault in the user page: */
+ rv = vm_fault(map, va, ftype,
(ftype & VM_PROT_WRITE) ? VM_FAULT_DIRTY
: VM_FAULT_NORMAL);
@@ -1044,17 +1034,13 @@ int trapwrite(addr)
++p->p_lock;
PROC_UNLOCK(p);
- if (!grow_stack (p, va)) {
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- return (1);
- }
-
- /*
- * fault the data page
- */
- rv = vm_fault(&vm->vm_map, va, VM_PROT_WRITE, VM_FAULT_DIRTY);
+ if (!grow_stack (p, va))
+ rv = KERN_FAILURE;
+ else
+ /*
+ * fault the data page
+ */
+ rv = vm_fault(&vm->vm_map, va, VM_PROT_WRITE, VM_FAULT_DIRTY);
PROC_LOCK(p);
--p->p_lock;
diff --git a/sys/ia64/ia64/trap.c b/sys/ia64/ia64/trap.c
index 8f9b258707f5..3582dd237d0f 100644
--- a/sys/ia64/ia64/trap.c
+++ b/sys/ia64/ia64/trap.c
@@ -396,17 +396,11 @@ trap(int vector, int imm, struct trapframe *framep)
* a growable stack region, or if the stack
* growth succeeded.
*/
- if (!grow_stack (p, va)) {
+ if (!grow_stack (p, va))
rv = KERN_FAILURE;
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- goto nogo;
- }
-
-
- /* Fault in the user page: */
- rv = vm_fault(map, va, ftype,
+ else
+ /* Fault in the user page: */
+ rv = vm_fault(map, va, ftype,
(ftype & VM_PROT_WRITE)
? VM_FAULT_DIRTY
: VM_FAULT_NORMAL);
@@ -422,7 +416,6 @@ trap(int vector, int imm, struct trapframe *framep)
rv = vm_fault(map, va, ftype, VM_FAULT_NORMAL);
}
- nogo:;
/*
* If this was a stack access we keep track of the
* maximum accessed stack size. Also, if vm_fault
diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c
index d9597dffceb0..5ff51fd037aa 100644
--- a/sys/kern/subr_trap.c
+++ b/sys/kern/subr_trap.c
@@ -743,16 +743,11 @@ trap_pfault(frame, usermode, eva)
* a growable stack region, or if the stack
* growth succeeded.
*/
- if (!grow_stack (p, va)) {
+ if (!grow_stack (p, va))
rv = KERN_FAILURE;
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- goto nogo;
- }
-
- /* Fault in the user page: */
- rv = vm_fault(map, va, ftype,
+ else
+ /* Fault in the user page: */
+ rv = vm_fault(map, va, ftype,
(ftype & VM_PROT_WRITE) ? VM_FAULT_DIRTY
: VM_FAULT_NORMAL);
@@ -864,16 +859,11 @@ trap_pfault(frame, usermode, eva)
* a growable stack region, or if the stack
* growth succeeded.
*/
- if (!grow_stack (p, va)) {
+ if (!grow_stack (p, va))
rv = KERN_FAILURE;
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- goto nogo;
- }
-
- /* Fault in the user page: */
- rv = vm_fault(map, va, ftype,
+ else
+ /* Fault in the user page: */
+ rv = vm_fault(map, va, ftype,
(ftype & VM_PROT_WRITE) ? VM_FAULT_DIRTY
: VM_FAULT_NORMAL);
@@ -1044,17 +1034,13 @@ int trapwrite(addr)
++p->p_lock;
PROC_UNLOCK(p);
- if (!grow_stack (p, va)) {
- PROC_LOCK(p);
- --p->p_lock;
- PROC_UNLOCK(p);
- return (1);
- }
-
- /*
- * fault the data page
- */
- rv = vm_fault(&vm->vm_map, va, VM_PROT_WRITE, VM_FAULT_DIRTY);
+ if (!grow_stack (p, va))
+ rv = KERN_FAILURE;
+ else
+ /*
+ * fault the data page
+ */
+ rv = vm_fault(&vm->vm_map, va, VM_PROT_WRITE, VM_FAULT_DIRTY);
PROC_LOCK(p);
--p->p_lock;