--- 2.3.47aa1/arch/i386/kernel/irq.c Mon Feb 21 15:45:10 2000 +++ /tmp/irq.c Tue Feb 22 15:33:21 2000 @@ -419,10 +419,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;