Hi Gabriele,

> 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 <gabriele....@gmail.com>
> ---
> net/bluetooth/hci_core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
> index 476709b..4663c3d 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);

this is a good catch.

Acked-by: Marcel Holtmann <mar...@holtmann.org>
Cc: sta...@vger.kernel.org # 4.0.x

Dave, do you want to take this patch straight into your stable tree?

Regards

Marcel

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to