From dcc579a642d9135b68e6f18063fad1aa41c14d70 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Wed, 2 Jun 2004 18:21:26 -0700 Subject: [PATCH] [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: Paul Mackerras Signed-off-by: Linus Torvalds --- arch/ppc/kernel/irq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/ppc/kernel/irq.c b/arch/ppc/kernel/irq.c index c1df603954f62..cc3b36c0d9aff 100644 --- a/arch/ppc/kernel/irq.c +++ b/arch/ppc/kernel/irq.c @@ -304,8 +304,10 @@ void disable_irq_nosync(unsigned int irq) void disable_irq(unsigned int irq) { + irq_desc_t *desc = irq_desc + irq; disable_irq_nosync(irq); - synchronize_irq(irq); + if (desc->action) + synchronize_irq(irq); } /** -- 2.53.0