summaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial/omap-serial.c
diff options
context:
space:
mode:
authorFelipe Balbi <balbi@ti.com>2014-04-23 16:58:27 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-04-25 01:16:33 +0200
commit6bf789672ee8387fda08af1deeffd12126e60659 (patch)
treec17f3319344c99f9de760df1589c4a8fc9fdde53 /drivers/tty/serial/omap-serial.c
parentbluetooth: hci_ldisc: fix deadlock condition (diff)
downloadlinux-6bf789672ee8387fda08af1deeffd12126e60659.tar.xz
linux-6bf789672ee8387fda08af1deeffd12126e60659.zip
Revert "serial: omap: unlock the port lock"
This reverts commit 0324a821029e1f54e7a7f8fed48693cfce42dc0e. That commit tried to fix a deadlock problem when using hci_ldisc, but it turns out the bug was in hci_ldsic all along where it was calling ->write() from within ->write_wakeup() callback. The problem is that ->write_wakeup() was called with port lock held and ->write() tried to grab the same port lock. Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/omap-serial.c')
-rw-r--r--drivers/tty/serial/omap-serial.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index 08b6b9419f0d..837f6c1c8e7a 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -398,11 +398,8 @@ static void transmit_chars(struct uart_omap_port *up, unsigned int lsr)
break;
} while (--count > 0);
- if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) {
- spin_unlock(&up->port.lock);
+ if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
uart_write_wakeup(&up->port);
- spin_lock(&up->port.lock);
- }
if (uart_circ_empty(xmit))
serial_omap_stop_tx(&up->port);