From a6bd12338173c1ced4f2870ef0f0081c6fb6427d Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Wed, 22 Nov 2006 09:32:06 -0800 Subject: [PATCH] --- yaml --- r: 41053 b: refs/heads/master c: b42172fc7b569a0ef2b0fa38d71382969074c0e2 h: refs/heads/master i: 41051: c41f250a9ea89653c1db178b20be2e6c0827a1f1 v: v3 --- [refs] | 2 +- trunk/kernel/irq/handle.c | 4 ++-- trunk/kernel/irq/spurious.c | 6 +----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index f78de409aa60..13fbb6d0b927 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0f9005a6f7a82f4aacbd72f7b92322a8ca1c3f97 +refs/heads/master: b42172fc7b569a0ef2b0fa38d71382969074c0e2 diff --git a/trunk/kernel/irq/handle.c b/trunk/kernel/irq/handle.c index 42aa6f1a3f0f..a681912bc89a 100644 --- a/trunk/kernel/irq/handle.c +++ b/trunk/kernel/irq/handle.c @@ -231,10 +231,10 @@ fastcall unsigned int __do_IRQ(unsigned int irq) spin_unlock(&desc->lock); action_ret = handle_IRQ_event(irq, action); - - spin_lock(&desc->lock); if (!noirqdebug) note_interrupt(irq, desc, action_ret); + + spin_lock(&desc->lock); if (likely(!(desc->status & IRQ_PENDING))) break; desc->status &= ~IRQ_PENDING; diff --git a/trunk/kernel/irq/spurious.c b/trunk/kernel/irq/spurious.c index 9c7e2e4c1fe7..543ea2e5ad93 100644 --- a/trunk/kernel/irq/spurious.c +++ b/trunk/kernel/irq/spurious.c @@ -147,11 +147,7 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc, if (unlikely(irqfixup)) { /* Don't punish working computers */ if ((irqfixup == 2 && irq == 0) || action_ret == IRQ_NONE) { - int ok; - - spin_unlock(&desc->lock); - ok = misrouted_irq(irq); - spin_lock(&desc->lock); + int ok = misrouted_irq(irq); if (action_ret == IRQ_NONE) desc->irqs_unhandled -= ok; }