summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/i386/kernel/irq.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c
index b283b5c0c8b1..ac767766b6d7 100644
--- a/arch/i386/kernel/irq.c
+++ b/arch/i386/kernel/irq.c
@@ -380,8 +380,9 @@ asmlinkage unsigned int do_IRQ(struct pt_regs regs)
break;
desc->status &= ~IRQ_PENDING;
}
-out:
desc->status &= ~IRQ_INPROGRESS;
+
+out:
/*
* The ->end() handler has to deal with interrupts which got
* disabled while the handler was running.
@@ -768,7 +769,7 @@ int setup_irq(unsigned int irq, struct irqaction * new)
if (!shared) {
desc->depth = 0;
- desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING);
+ desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS);
desc->handler->startup(irq);
}
spin_unlock_irqrestore(&desc->lock,flags);