On 02.06.2023 10:19, Johan Hovold wrote: > A recent commit restored the original (and still documented) semantics > for the HCI_QUIRK_USE_BDADDR_PROPERTY quirk so that the device address > is considered invalid unless an address is provided by firmware. > > This specifically means that this flag must only be set for devices with > invalid addresses, but the Broadcom driver has so far been setting this > flag unconditionally. > > Fortunately the driver already checks for invalid addresses during setup > and sets the HCI_QUIRK_INVALID_BDADDR flag. Use this flag to indicate > when the address can be overridden by firmware (long term, this should > probably just always be allowed). > > Fixes: 6ac517d8cf8b ("Bluetooth: fix use-bdaddr-property quirk") > Reported-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > Link: https://lore.kernel.org/lkml/ecef83c8-497f-4011-607b-a63c24764867@xxxxxxxxxxx > Signed-off-by: Johan Hovold <johan+linaro@xxxxxxxxxx> Tested-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > --- > drivers/bluetooth/hci_bcm.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c > index 83bf5d4330c4..874d23089b39 100644 > --- a/drivers/bluetooth/hci_bcm.c > +++ b/drivers/bluetooth/hci_bcm.c > @@ -643,7 +643,8 @@ static int bcm_setup(struct hci_uart *hu) > * Allow the bootloader to set a valid address through the > * device tree. > */ > - set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hu->hdev->quirks); > + if (test_bit(HCI_QUIRK_INVALID_BDADDR, &hu->hdev->quirks)) > + set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hu->hdev->quirks); > > if (!bcm_request_irq(bcm)) > err = bcm_setup_sleep(hu); Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland