diff options
| -rw-r--r-- | drivers/serial/serial_ks8695.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/serial/serial_ks8695.c b/drivers/serial/serial_ks8695.c index e0665630e4da..52db5cc3f900 100644 --- a/drivers/serial/serial_ks8695.c +++ b/drivers/serial/serial_ks8695.c | |||
| @@ -110,7 +110,11 @@ static struct console ks8695_console; | |||
| 110 | static void ks8695uart_stop_tx(struct uart_port *port) | 110 | static void ks8695uart_stop_tx(struct uart_port *port) |
| 111 | { | 111 | { |
| 112 | if (tx_enabled(port)) { | 112 | if (tx_enabled(port)) { |
| 113 | disable_irq(KS8695_IRQ_UART_TX); | 113 | /* use disable_irq_nosync() and not disable_irq() to avoid self |
| 114 | * imposed deadlock by not waiting for irq handler to end, | ||
| 115 | * since this ks8695uart_stop_tx() is called from interrupt context. | ||
| 116 | */ | ||
| 117 | disable_irq_nosync(KS8695_IRQ_UART_TX); | ||
| 114 | tx_enable(port, 0); | 118 | tx_enable(port, 0); |
| 115 | } | 119 | } |
| 116 | } | 120 | } |
