diff options
Diffstat (limited to 'kernel/irq/spurious.c')
| -rw-r--r-- | kernel/irq/spurious.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c index 543ea2e5ad93..9c7e2e4c1fe7 100644 --- a/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c | |||
| @@ -147,7 +147,11 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc, | |||
| 147 | if (unlikely(irqfixup)) { | 147 | if (unlikely(irqfixup)) { |
| 148 | /* Don't punish working computers */ | 148 | /* Don't punish working computers */ |
| 149 | if ((irqfixup == 2 && irq == 0) || action_ret == IRQ_NONE) { | 149 | if ((irqfixup == 2 && irq == 0) || action_ret == IRQ_NONE) { |
| 150 | int ok = misrouted_irq(irq); | 150 | int ok; |
| 151 | |||
| 152 | spin_unlock(&desc->lock); | ||
| 153 | ok = misrouted_irq(irq); | ||
| 154 | spin_lock(&desc->lock); | ||
| 151 | if (action_ret == IRQ_NONE) | 155 | if (action_ret == IRQ_NONE) |
| 152 | desc->irqs_unhandled -= ok; | 156 | desc->irqs_unhandled -= ok; |
| 153 | } | 157 | } |
