[PATCH] genirq: fix typo in IRQ resend
authorImre Deak <[email protected]>
Sat, 16 Sep 2006 19:15:35 +0000 (12:15 -0700)
committerLinus Torvalds <[email protected]>
Sat, 16 Sep 2006 19:54:30 +0000 (12:54 -0700)
Fix a bug where the IRQ_PENDING flag is never cleared and the ISR is called
endlessly without an actual interrupt.

Signed-off-by: Imre Deak <[email protected]>
Acked-by: Thomas Gleixner <[email protected]>
Acked-by: Ingo Molnar <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
kernel/irq/resend.c

index 872f91ba2ce89f414450550c3287e20a758ec474..35f10f7ff94aec43957fa71e7e97cf8f67b22b73 100644 (file)
@@ -63,8 +63,7 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq)
        desc->chip->enable(irq);
 
        if ((status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) {
-               desc->status &= ~IRQ_PENDING;
-               desc->status = status | IRQ_REPLAY;
+               desc->status = (status & ~IRQ_PENDING) | IRQ_REPLAY;
 
                if (!desc->chip || !desc->chip->retrigger ||
                                        !desc->chip->retrigger(irq)) {