--- x/drivers/bluetooth/hci_vhci.c +++ y/drivers/bluetooth/hci_vhci.c @@ -74,11 +74,7 @@ static int vhci_send_frame(struct hci_de struct vhci_data *data = hci_get_drvdata(hdev); memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1); - - mutex_lock(&data->open_mutex); skb_queue_tail(&data->readq, skb); - mutex_unlock(&data->open_mutex); - wake_up_interruptible(&data->read_wait); return 0; } @@ -464,7 +460,7 @@ static int __vhci_create_device(struct v skb_put_u8(skb, 0xff); skb_put_u8(skb, opcode); put_unaligned_le16(hdev->id, skb_put(skb, 2)); - skb_queue_tail(&data->readq, skb); + skb_queue_head(&data->readq, skb); wake_up_interruptible(&data->read_wait); return 0;