--- x/drivers/bluetooth/hci_serdev.c +++ y/drivers/bluetooth/hci_serdev.c @@ -395,7 +395,10 @@ void hci_uart_unregister_device(struct h hu->proto->close(hu); if (test_bit(HCI_UART_PROTO_READY, &hu->flags)) { + percpu_down_write(&hu->proto_lock); clear_bit(HCI_UART_PROTO_READY, &hu->flags); + percpu_up_write(&hu->proto_lock); + serdev_device_close(hu->serdev); } }