--- 2.2.10/arch/i386/kernel/irq.c Tue Jul 13 00:33:09 1999 +++ /tmp/irq.c Tue Aug 3 19:26:23 1999 @@ -726,10 +726,11 @@ 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;