The code in hci_uart_tty_close is over complex in handling flag HCI_UART_REGISTERED as it is unnecessary to check that hdev is NULL. This is because hdev is only valid when HCI_UART_REGISTERED is in the set state. Therefore, remove all "if (hdev)" checks and instead check for flag HCI_UART_REGISTERED being in the set state. Signed-off-by: Dean Jenkins <Dean_Jenkins@xxxxxxxxxx> --- drivers/bluetooth/hci_ldisc.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c index 9e3604d..2d5c6f0 100644 --- a/drivers/bluetooth/hci_ldisc.c +++ b/drivers/bluetooth/hci_ldisc.c @@ -500,20 +500,17 @@ static void hci_uart_tty_close(struct tty_struct *tty) return; hdev = hu->hdev; - if (hdev) + if (test_bit(HCI_UART_REGISTERED, &hu->flags)) hci_uart_close(hdev); cancel_work_sync(&hu->write_work); - if (hdev) { - if (test_bit(HCI_UART_REGISTERED, &hu->flags)) - /* Note hci_unregister_dev() may try to send a - * HCI RESET command. If the transmission fails then - * hci_unregister_dev() waits HCI_CMD_TIMEOUT - * (2) seconds for the timeout to occur. - */ - hci_unregister_dev(hdev); - } + if (test_bit(HCI_UART_REGISTERED, &hu->flags)) + /* Note hci_unregister_dev() may try to send a HCI RESET + * command. If the transmission fails then hci_unregister_dev() + * waits HCI_CMD_TIMEOUT (2) seconds for the timeout to occur. + */ + hci_unregister_dev(hdev); if (test_bit(HCI_UART_PROTO_READY, &hu->flags)) { clear_bit(HCI_UART_PROTO_READY, &hu->flags); -- 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