In hci_uart_tty_close() move hci_uart_close() to after the call to hci_unregister_dev() to avoid the tty flush in hci_uart_close() and clearance of HCI_RUNNING from corrupting the Data Link protocol layer's communication stream. In fact, perform hci_uart_close() at the of hci_uart_tty_close() where the Data Link protocol layer has been closed so that no more data can be written in the tty layer. This makes the flush clear out any non-sent data from the tty layer although this is probably unnecessary. Signed-off-by: Dean Jenkins <Dean_Jenkins@xxxxxxxxxx> --- drivers/bluetooth/hci_ldisc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c index e7d1b8b..acb08c6 100644 --- a/drivers/bluetooth/hci_ldisc.c +++ b/drivers/bluetooth/hci_ldisc.c @@ -497,8 +497,6 @@ static void hci_uart_tty_close(struct tty_struct *tty) return; hdev = hu->hdev; - if (test_bit(HCI_UART_REGISTERED, &hu->flags)) - hci_uart_close(hdev); cancel_work_sync(&hu->write_work); @@ -520,6 +518,7 @@ static void hci_uart_tty_close(struct tty_struct *tty) clear_bit(HCI_UART_PROTO_SET, &hu->flags); if (test_and_clear_bit(HCI_UART_REGISTERED, &hu->flags)) { + hci_uart_close(hdev); hu->hdev = NULL; hci_free_dev(hdev); } -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html