Skip to content

Commit

Permalink
ARM: 5688/1: ks8695_serial: disable_irq() lockup
Browse files Browse the repository at this point in the history
disable_irq() cannot be called from interrupt context without self imposed deadlock. This was happening in ks8695uart_stop_tx().

Signed-off-by: Dick Hollenbeck <dick@softplc.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Dick Hollenbeck authored and Russell King committed Sep 2, 2009
1 parent 13f96d8 commit c47a830
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion drivers/serial/serial_ks8695.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,11 @@ static struct console ks8695_console;
static void ks8695uart_stop_tx(struct uart_port *port)
{
if (tx_enabled(port)) {
disable_irq(KS8695_IRQ_UART_TX);
/* use disable_irq_nosync() and not disable_irq() to avoid self
* imposed deadlock by not waiting for irq handler to end,
* since this ks8695uart_stop_tx() is called from interrupt context.
*/
disable_irq_nosync(KS8695_IRQ_UART_TX);
tx_enable(port, 0);
}
}
Expand Down

0 comments on commit c47a830

Please sign in to comment.