From: Jiri Slaby 2 spin_unlocks are omitted in the interrupt handler. Put them there to fix up deadlocking on UP. Signed-off-by: Jiri Slaby Signed-off-by: Andrew Morton --- drivers/char/isicom.c | 2 ++ 1 files changed, 2 insertions(+) diff -puN drivers/char/isicom.c~char-isicom-fix-locking-in-isr drivers/char/isicom.c --- a/drivers/char/isicom.c~char-isicom-fix-locking-in-isr +++ a/drivers/char/isicom.c @@ -563,6 +563,7 @@ static irqreturn_t isicom_interrupt(int port = card->ports + channel; if (!(port->flags & ASYNC_INITIALIZED)) { outw(0x0000, base+0x04); /* enable interrupts */ + spin_unlock(&card->card_lock); return IRQ_HANDLED; } @@ -677,6 +678,7 @@ static irqreturn_t isicom_interrupt(int tty_flip_buffer_push(tty); } outw(0x0000, base+0x04); /* enable interrupts */ + spin_unlock(&card->card_lock); return IRQ_HANDLED; } _