--- x/net/bluetooth/hci_core.c +++ y/net/bluetooth/hci_core.c @@ -3237,7 +3237,13 @@ void hci_send_acl(struct hci_chan *chan, hci_queue_acl(chan, &chan->data_q, skb, flags); - queue_work(hdev->workqueue, &hdev->tx_work); + rcu_read_lock(); + if (test_bit(HCI_RESET, &hdev->flags) || + hci_dev_test_flag(hdev, HCI_CMD_DRAIN_WORKQUEUE)) + ; + else + queue_work(hdev->workqueue, &hdev->tx_work); + rcu_read_unlock(); } /* Send SCO data */