summaryrefslogtreecommitdiff
path: root/sys/arch/i386
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2011-05-10 11:11:57 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2011-05-10 11:11:57 +0000
commit81a4dce6191d8e7e8a656e5957610a0cb8809423 (patch)
tree40b07a4a69be63caac8947becfbe7b02131fc9a7 /sys/arch/i386
parent833dd7114e48fbe36411605bb3af8b0cc239f8c1 (diff)
Fix deadlock (re)introduced by the previous commit by explicitly re-enabling
interrupts in the code that cleans up after we fault during return to user mode. Handling traps with interrupts blocked is *not* ok! ok krw@
Diffstat (limited to 'sys/arch/i386')
-rw-r--r--sys/arch/i386/i386/locore.s4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/arch/i386/i386/locore.s b/sys/arch/i386/i386/locore.s
index a4936ee763b..dfd962a6721 100644
--- a/sys/arch/i386/i386/locore.s
+++ b/sys/arch/i386/i386/locore.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.s,v 1.134 2011/04/27 11:30:53 bluhm Exp $ */
+/* $OpenBSD: locore.s,v 1.135 2011/05/10 11:11:56 kettenis Exp $ */
/* $NetBSD: locore.s,v 1.145 1996/05/03 19:41:19 christos Exp $ */
/*-
@@ -1461,6 +1461,7 @@ IDTVEC(align)
* This will cause the process to get a SIGBUS.
*/
NENTRY(resume_iret)
+ sti
ZTRAP(T_PROTFLT)
NENTRY(resume_pop_ds)
pushl %es
@@ -1476,6 +1477,7 @@ NENTRY(resume_pop_gs)
movw %ax,%fs
NENTRY(resume_pop_fs)
movl $T_PROTFLT,TF_TRAPNO(%esp)
+ sti
jmp calltrap
NENTRY(alltraps)