summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormikeb <mikeb@openbsd.org>2015-07-09 13:23:51 +0000
committermikeb <mikeb@openbsd.org>2015-07-09 13:23:51 +0000
commit39160b96a829710c4b2be858f29ee15a64911594 (patch)
tree0cbf13a431e034b9d5cd1cc44a7d450f9ed4c225
parentgc old code, from Jean-Philippe Ouellet (diff)
downloadwireguard-openbsd-39160b96a829710c4b2be858f29ee15a64911594.tar.xz
wireguard-openbsd-39160b96a829710c4b2be858f29ee15a64911594.zip
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
-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