diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 6e76798ec786..9a7477621a6b 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -4957,6 +4957,7 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { + struct fwnode_handle *fwnode = dev_fwnode(hdev->dev.parent); int ret = 0; bool invalid_bdaddr; size_t i; @@ -4985,7 +4986,8 @@ static int hci_dev_setup_sync(struct hci_dev *hdev) hci_test_quirk(hdev, HCI_QUIRK_USE_BDADDR_PROPERTY); if (!ret) { if (hci_test_quirk(hdev, HCI_QUIRK_USE_BDADDR_PROPERTY) && - !bacmp(&hdev->public_addr, BDADDR_ANY)) + !bacmp(&hdev->public_addr, BDADDR_ANY) && + (invalid_bdaddr || !fwnode_property_present(fwnode, "fallback-bd-address"))) hci_dev_get_bd_addr_from_property(hdev); if (invalid_bdaddr && bacmp(&hdev->public_addr, BDADDR_ANY) &&