Commit dcc579a6 authored by Paul Mackerras's avatar Paul Mackerras Committed by Linus Torvalds

[PATCH] ppc32: Don't synchronize in disable_irq() if no handler

This patch is the ppc32 counterpart to a fix that went into
arch/i386/kernel/irq.c last October.  The bug was noted by Al Viro: if
no handler exists, and we have IRQ_INPROGRESS set because of an
earlier irq that got through, synchronize_irq() will end up waiting
forever.
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent d2b8378d
...@@ -304,8 +304,10 @@ void disable_irq_nosync(unsigned int irq) ...@@ -304,8 +304,10 @@ void disable_irq_nosync(unsigned int irq)
void disable_irq(unsigned int irq) void disable_irq(unsigned int irq)
{ {
irq_desc_t *desc = irq_desc + irq;
disable_irq_nosync(irq); disable_irq_nosync(irq);
synchronize_irq(irq); if (desc->action)
synchronize_irq(irq);
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment