--- 2.4.10pre2aa3/arch/i386/kernel/irq.c.~1~ Sat Sep 1 02:39:49 2001 +++ 2.4.10pre2aa3/arch/i386/kernel/irq.c Sat Sep 1 02:40:17 2001 @@ -443,10 +443,12 @@ status = 1; /* Force the "do bottom halves" bit */ - if (!(action->flags & SA_INTERRUPT)) - __sti(); - do { + if (!(action->flags & SA_INTERRUPT)) + __sti(); + else + __cli(); + status |= action->flags; action->handler(irq, action->dev_id, regs); action = action->next;