summaryrefslogtreecommitdiff
path: root/sys/arch/i386
diff options
context:
space:
mode:
authorMartin Pieuchot <mpi@cvs.openbsd.org>2021-09-19 10:43:27 +0000
committerMartin Pieuchot <mpi@cvs.openbsd.org>2021-09-19 10:43:27 +0000
commit9c442b7775f92366a3bbc3f61587050b0f897f70 (patch)
tree3468d7416f3d4f77fa19748c29c4ce12572fdf78 /sys/arch/i386
parent32ca60dd942ed5718acc123f860d092ec379bff2 (diff)
Unlock top part of the VM fault handler.
This is possible now that pmap_extract() is serialized with pmap_remove(). ok sthen@, deraadt@
Diffstat (limited to 'sys/arch/i386')
-rw-r--r--sys/arch/i386/i386/trap.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/sys/arch/i386/i386/trap.c b/sys/arch/i386/i386/trap.c
index e97d0928b47..86ca52a1b1b 100644
--- a/sys/arch/i386/i386/trap.c
+++ b/sys/arch/i386/i386/trap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: trap.c,v 1.154 2021/06/20 10:58:36 sthen Exp $ */
+/* $OpenBSD: trap.c,v 1.155 2021/09/19 10:43:26 mpi Exp $ */
/* $NetBSD: trap.c,v 1.95 1996/05/05 06:50:02 mycroft Exp $ */
/*-
@@ -126,9 +126,7 @@ upageflttrap(struct trapframe *frame, uint32_t cr2)
union sigval sv;
int signal, sicode, error;
- KERNEL_LOCK();
error = uvm_fault(&p->p_vmspace->vm_map, va, 0, access_type);
- KERNEL_UNLOCK();
if (error == 0) {
uvm_grow(p, va);
@@ -203,9 +201,7 @@ kpageflttrap(struct trapframe *frame, uint32_t cr2)
if (curcpu()->ci_inatomic == 0 || map == kernel_map) {
onfault = pcb->pcb_onfault;
pcb->pcb_onfault = NULL;
- KERNEL_LOCK();
error = uvm_fault(map, va, 0, access_type);
- KERNEL_UNLOCK();
pcb->pcb_onfault = onfault;
if (error == 0 && map != kernel_map)