diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 51f754b6e838..34ed50c40be1 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -4732,6 +4732,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; @@ -4760,7 +4761,8 @@ static int hci_dev_setup_sync(struct hci_dev *hdev) test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks); if (!ret) { if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) && - !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) &&