From: Gabriele Mazzotta Date: Sun, 26 Apr 2015 18:51:50 +0000 (+0200) Subject: Bluetooth: Skip the shutdown routine if the interface is not up X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=d24d81444f8caf1895256ef2d2e89ae8202a17e4;p=linux.git Bluetooth: Skip the shutdown routine if the interface is not up Most likely, the shutdown routine requires the interface to be up. This is the case for BTUSB_INTEL: the routine tries to send a command to the interface, but since this one is down, it fails and exits once HCI_INIT_TIMEOUT has expired. Signed-off-by: Gabriele Mazzotta Signed-off-by: Marcel Holtmann Cc: stable@vger.kernel.org # 4.0.x --- diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 476709bd068a4..4663c3dad3f5f 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -1557,7 +1557,8 @@ static int hci_dev_do_close(struct hci_dev *hdev) { BT_DBG("%s %p", hdev->name, hdev); - if (!hci_dev_test_flag(hdev, HCI_UNREGISTER)) { + if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) && + test_bit(HCI_UP, &hdev->flags)) { /* Execute vendor specific shutdown routine */ if (hdev->shutdown) hdev->shutdown(hdev);