summaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/rtrap_64.S
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2010-05-07 11:27:54 +0200
committerIngo Molnar <mingo@elte.hu>2010-05-07 11:27:54 +0200
commit48652ced1533c3372f996a0d83b6e73b1f1c9381 (patch)
tree5e17729cfcdc97bf798a17b57cdb888b4ded65b0 /arch/sparc/kernel/rtrap_64.S
parent99bd5e2f245d8cd17d040c82d40becdb3efd9b69 (diff)
parent66f41d4c5c8a5deed66fdcc84509376c9a0bf9d8 (diff)
downloadtalos-op-linux-48652ced1533c3372f996a0d83b6e73b1f1c9381.tar.gz
talos-op-linux-48652ced1533c3372f996a0d83b6e73b1f1c9381.zip
Merge commit 'v2.6.34-rc6' into sched/core
Diffstat (limited to 'arch/sparc/kernel/rtrap_64.S')
-rw-r--r--arch/sparc/kernel/rtrap_64.S12
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S
index 83f1873c6c13..090b9e9ad5e3 100644
--- a/arch/sparc/kernel/rtrap_64.S
+++ b/arch/sparc/kernel/rtrap_64.S
@@ -130,7 +130,17 @@ rtrap_xcall:
nop
call trace_hardirqs_on
nop
- wrpr %l4, %pil
+ /* Do not actually set the %pil here. We will do that
+ * below after we clear PSTATE_IE in the %pstate register.
+ * If we re-enable interrupts here, we can recurse down
+ * the hardirq stack potentially endlessly, causing a
+ * stack overflow.
+ *
+ * It is tempting to put this test and trace_hardirqs_on
+ * call at the 'rt_continue' label, but that will not work
+ * as that path hits unconditionally and we do not want to
+ * execute this in NMI return paths, for example.
+ */
#endif
rtrap_no_irq_enable:
andcc %l1, TSTATE_PRIV, %l3
OpenPOWER on IntegriCloud