sparc64: Fix hardirq tracing in trap return path.

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Tuesday, April 20, 2010 - 9:59 am

Gitweb:     http://git.kernel.org/linus/28a1f533ae8606020238b840b82ae70a3f87609e
Commit:     28a1f533ae8606020238b840b82ae70a3f87609e
Parent:     baa06775e224e9f74e5c2de894c95cd49678beff
Author:     David S. Miller <davem@davemloft.net>
AuthorDate: Tue Apr 20 00:48:37 2010 -0700
Committer:  David S. Miller <davem@davemloft.net>
CommitDate: Tue Apr 20 00:48:37 2010 -0700

    sparc64: Fix hardirq tracing in trap return path.
    
    We can overflow the hardirq stack if we set the %pil here
    so early, just let the normal control flow do it.
    
    This is fine as we are allowed to do the actual IRQ enable
    at any point after we call trace_hardirqs_on.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
---
 arch/sparc/kernel/rtrap_64.S |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S
index 83f1873..090b9e9 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
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
sparc64: Fix hardirq tracing in trap return path., Linux Kernel Mailing ..., (Tue Apr 20, 9:59 am)