summaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/hci_uart.h
diff options
context:
space:
mode:
authorFelipe Balbi <balbi@ti.com>2014-04-23 16:58:26 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-04-25 01:16:33 +0200
commitda64c27d3c93ee9f89956b9de86c4127eb244494 (patch)
tree379c2bedcc6f9db3461aefb81927da7d2acbcad0 /drivers/bluetooth/hci_uart.h
parenttty_ldisc: add more limits to the @write_wakeup (diff)
downloadlinux-da64c27d3c93ee9f89956b9de86c4127eb244494.tar.xz
linux-da64c27d3c93ee9f89956b9de86c4127eb244494.zip
bluetooth: hci_ldisc: fix deadlock condition
LDISCs shouldn't call tty->ops->write() from within ->write_wakeup(). ->write_wakeup() is called with port lock taken and IRQs disabled, tty->ops->write() will try to acquire the same port lock and we will deadlock. Acked-by: Marcel Holtmann <marcel@holtmann.org> Reviewed-by: Peter Hurley <peter@hurleysoftware.com> Reported-by: Huang Shijie <b32955@freescale.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Tested-by: Andreas Bießmann <andreas@biessmann.de> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/bluetooth/hci_uart.h')
-rw-r--r--drivers/bluetooth/hci_uart.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/bluetooth/hci_uart.h b/drivers/bluetooth/hci_uart.h
index fffa61ff5cb1..12df101ca942 100644
--- a/drivers/bluetooth/hci_uart.h
+++ b/drivers/bluetooth/hci_uart.h
@@ -68,6 +68,7 @@ struct hci_uart {
unsigned long hdev_flags;
struct work_struct init_ready;
+ struct work_struct write_work;
struct hci_uart_proto *proto;
void *priv;