diff options
author | Felipe Balbi <balbi@ti.com> | 2014-04-23 16:58:26 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-04-25 01:16:33 +0200 |
commit | da64c27d3c93ee9f89956b9de86c4127eb244494 (patch) | |
tree | 379c2bedcc6f9db3461aefb81927da7d2acbcad0 /drivers/bluetooth/hci_uart.h | |
parent | tty_ldisc: add more limits to the @write_wakeup (diff) | |
download | linux-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.h | 1 |
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; |