summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2007-10-27 22:31:17 +0000
committerkettenis <kettenis@openbsd.org>2007-10-27 22:31:17 +0000
commit9b9112bbe7f63ab59e6d9f1e7886befcffe23f73 (patch)
treea8842f208192f7bdcd2567d3eec438216071e010
parentget rid of btoc/ctob in favor of atop/ptoa (diff)
downloadwireguard-openbsd-9b9112bbe7f63ab59e6d9f1e7886befcffe23f73.tar.xz
wireguard-openbsd-9b9112bbe7f63ab59e6d9f1e7886befcffe23f73.zip
Grab kernel lock for EXC_DSI.
Requested by deraadt@
-rw-r--r--sys/arch/powerpc/powerpc/trap.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/arch/powerpc/powerpc/trap.c b/sys/arch/powerpc/powerpc/trap.c
index dde75b48119..2b1694924b2 100644
--- a/sys/arch/powerpc/powerpc/trap.c
+++ b/sys/arch/powerpc/powerpc/trap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: trap.c,v 1.78 2007/04/26 21:36:32 kettenis Exp $ */
+/* $OpenBSD: trap.c,v 1.79 2007/10/27 22:31:17 kettenis Exp $ */
/* $NetBSD: trap.c,v 1.3 1996/10/13 03:31:37 christos Exp $ */
/*
@@ -314,8 +314,12 @@ trap(struct trapframe *frame)
ftype = VM_PROT_READ | VM_PROT_WRITE;
else
ftype = VM_PROT_READ;
- if (uvm_fault(map, trunc_page(va), 0, ftype) == 0)
+ KERNEL_LOCK();
+ if (uvm_fault(map, trunc_page(va), 0, ftype) == 0) {
+ KERNEL_UNLOCK();
return;
+ }
+ KERNEL_UNLOCK();
if ((fb = p->p_addr->u_pcb.pcb_onfault)) {
p->p_addr->u_pcb.pcb_onfault = 0;