summaryrefslogtreecommitdiffstats
path: root/sys/arm
diff options
context:
space:
mode:
authorcognet <cognet@FreeBSD.org>2006-03-01 20:42:47 +0000
committercognet <cognet@FreeBSD.org>2006-03-01 20:42:47 +0000
commit6ea36e7106157a2c91b655e92553cfcb0e5ba942 (patch)
tree4919c48f1b3acca48630cafc5255b3b520b9cb0f /sys/arm
parent15a5b0ca2d2c326c8bc1193e7bcdf44ad877ad3f (diff)
downloadFreeBSD-src-6ea36e7106157a2c91b655e92553cfcb0e5ba942.zip
FreeBSD-src-6ea36e7106157a2c91b655e92553cfcb0e5ba942.tar.gz
Make sure we decrement p_lock before leaving prefetch_abort_handler()
Diffstat (limited to 'sys/arm')
-rw-r--r--sys/arm/arm/trap.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/arm/arm/trap.c b/sys/arm/arm/trap.c
index 2fc7205..4819fff 100644
--- a/sys/arm/arm/trap.c
+++ b/sys/arm/arm/trap.c
@@ -428,15 +428,14 @@ data_abort_handler(trapframe_t *tf)
error = vm_fault(map, va, ftype, (ftype & VM_PROT_WRITE) ?
VM_FAULT_DIRTY : VM_FAULT_NORMAL);
pcb->pcb_onfault = onfault;
- if (__predict_true(error == 0)) {
- goto out;
- }
if (map != kernel_map) {
PROC_LOCK(p);
p->p_lock--;
PROC_UNLOCK(p);
}
+ if (__predict_true(error == 0))
+ goto out;
if (user == 0) {
if (pcb->pcb_onfault) {
tf->tf_r0 = error;
@@ -930,6 +929,7 @@ syscall(struct thread *td, trapframe_t *frame, u_int32_t insn)
AUDIT_SYSCALL_ENTER(code, td);
error = (*callp->sy_call)(td, args);
AUDIT_SYSCALL_EXIT(error, td);
+ KASSERT(td->td_ar == NULL, ("lol"));
}
switch (error) {
case 0:
OpenPOWER on IntegriCloud