aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial/efm32-uart.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/tty/serial/efm32-uart.c')
-rw-r--r--drivers/tty/serial/efm32-uart.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/drivers/tty/serial/efm32-uart.c b/drivers/tty/serial/efm32-uart.c
index bdf67b0cb8b6..de14bd7dce10 100644
--- a/drivers/tty/serial/efm32-uart.c
+++ b/drivers/tty/serial/efm32-uart.c
@@ -249,12 +249,9 @@ static irqreturn_t efm32_uart_rxirq(int irq, void *data)
249 int handled = IRQ_NONE; 249 int handled = IRQ_NONE;
250 struct uart_port *port = &efm_port->port; 250 struct uart_port *port = &efm_port->port;
251 struct tty_port *tport = &port->state->port; 251 struct tty_port *tport = &port->state->port;
252 struct tty_struct *tty;
253 252
254 spin_lock(&port->lock); 253 spin_lock(&port->lock);
255 254
256 tty = tty_kref_get(tport->tty);
257
258 if (irqflag & UARTn_IF_RXDATAV) { 255 if (irqflag & UARTn_IF_RXDATAV) {
259 efm32_uart_write32(efm_port, UARTn_IF_RXDATAV, UARTn_IFC); 256 efm32_uart_write32(efm_port, UARTn_IF_RXDATAV, UARTn_IFC);
260 efm32_uart_rx_chars(efm_port); 257 efm32_uart_rx_chars(efm_port);
@@ -270,10 +267,7 @@ static irqreturn_t efm32_uart_rxirq(int irq, void *data)
270 handled = IRQ_HANDLED; 267 handled = IRQ_HANDLED;
271 } 268 }
272 269
273 if (tty) { 270 tty_flip_buffer_push(tport);
274 tty_flip_buffer_push(tty);
275 tty_kref_put(tty);
276 }
277 271
278 spin_unlock(&port->lock); 272 spin_unlock(&port->lock);
279 273