powerpc: Fix lockdep IRQ tracing bug
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 15 Aug 2008 07:11:31 +0000 (17:11 +1000)
committerPaul Mackerras <paulus@samba.org>
Mon, 18 Aug 2008 04:22:34 +0000 (14:22 +1000)
A small bogon sneaked into the ppc64 lockdep support.  A test is
branching slightly off causing a clobbered register value to
overwrite the irq state under some circumstances.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/include/asm/irqflags.h

index 17ba3a881bfdff71d813d2030087b6ab04207ba0..5f68ecfdf516bf85d2094396363849647dae9ebd 100644 (file)
@@ -20,7 +20,7 @@
 #define TRACE_ENABLE_INTS      bl .trace_hardirqs_on
 #define TRACE_DISABLE_INTS     bl .trace_hardirqs_off
 #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip) \
-       cmpdi   en, 0;                          \
+       cmpdi   en,0;                           \
        bne     95f;                            \
        stb     en,PACASOFTIRQEN(r13);          \
        bl      .trace_hardirqs_off;            \
@@ -29,7 +29,8 @@
        li      en,1;
 #define TRACE_AND_RESTORE_IRQ(en)              \
        TRACE_AND_RESTORE_IRQ_PARTIAL(en,96f);  \
-96:    stb     en,PACASOFTIRQEN(r13)
+       stb     en,PACASOFTIRQEN(r13);          \
+96:
 #else
 #define TRACE_ENABLE_INTS
 #define TRACE_DISABLE_INTS