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 <[EMAIL PROTECTED]>
---

This explains some of the reported weird lockdep errors, maybe
even all of them, we'll see.

We should probably backport that to 2.6.26-stable too, any candidate ?

 arch/powerpc/include/asm/irqflags.h |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- linux-work.orig/arch/powerpc/include/asm/irqflags.h 2008-08-15 
16:48:43.000000000 +1000
+++ linux-work/arch/powerpc/include/asm/irqflags.h      2008-08-15 
16:51:02.000000000 +1000
@@ -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
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to