summaryrefslogtreecommitdiff
path: root/sys/arch/amd64
diff options
context:
space:
mode:
authorMike Belopuhov <mikeb@cvs.openbsd.org>2015-07-09 13:23:52 +0000
committerMike Belopuhov <mikeb@cvs.openbsd.org>2015-07-09 13:23:52 +0000
commitd53a9f52e8f3eaa7cfe83c44ba22ab05830851fe (patch)
treeeb24f3b3523a484df0ea49515d07382e23f8578f /sys/arch/amd64
parentcdceb8f14ec1ce504dbd4b4f9258f23aef286695 (diff)
Prevent possible interrupt recursion before unwinding the stack.
Xen delivers about 20 seconds worth of missed LAPIC timer events after we enable interrupts on application CPUs and this makes us recurse and burn the stack. OK kettenis, guenther, deraadt, "good find" mlarkin
Diffstat (limited to 'sys/arch/amd64')
-rw-r--r--sys/arch/amd64/amd64/vector.S6
1 files changed, 1 insertions, 5 deletions
diff --git a/sys/arch/amd64/amd64/vector.S b/sys/arch/amd64/amd64/vector.S
index 76b58ced70a..011a497524e 100644
--- a/sys/arch/amd64/amd64/vector.S
+++ b/sys/arch/amd64/amd64/vector.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: vector.S,v 1.40 2015/06/29 03:02:38 mlarkin Exp $ */
+/* $OpenBSD: vector.S,v 1.41 2015/07/09 13:23:51 mikeb Exp $ */
/* $NetBSD: vector.S,v 1.5 2004/06/28 09:13:11 fvdl Exp $ */
/*
@@ -350,7 +350,6 @@ IDTVEC(resume_lapic_ipi)
2:
movq $(1 << LIR_IPI),%rax
orq %rax,CPUVAR(IPENDING)
- sti
INTRFASTEXIT
IDTVEC(ipi_invltlb)
@@ -435,7 +434,6 @@ IDTVEC(resume_lapic_ltimer)
2:
movq $(1 << LIR_TIMER),%rax
orq %rax,CPUVAR(IPENDING)
- sti
INTRFASTEXIT
#endif /* NLAPIC > 0 */
@@ -518,12 +516,10 @@ IDTVEC(intr_##name##num) ;\
orq %rax,CPUVAR(IPENDING) ;\
level_mask(num) ;\
late_ack(num) ;\
- sti ;\
INTRFASTEXIT ;\
9: \
unmask(num) ;\
late_ack(num) ;\
- sti ;\
INTRFASTEXIT
#define ICUADDR IO_ICU1