diff --git a/bluetooth/1.0/default/vendor_interface.cc b/bluetooth/1.0/default/vendor_interface.cc index e6575b06aa..68cac5f45e 100644 --- a/bluetooth/1.0/default/vendor_interface.cc +++ b/bluetooth/1.0/default/vendor_interface.cc @@ -265,6 +265,13 @@ bool VendorInterface::Open(InitializeCompleteCallback initialize_complete_cb, } void VendorInterface::Close() { + // These callbacks may send HCI events (vendor-dependent), so make sure to + // StopWatching the file descriptor after this. + if (lib_interface_ != nullptr) { + bt_vendor_lpm_mode_t mode = BT_VND_LPM_DISABLE; + lib_interface_->op(BT_VND_OP_LPM_SET_MODE, &mode); + } + fd_watcher_.StopWatchingFileDescriptors(); if (hci_ != nullptr) {