Thread (8 messages) flat view 8 messages, 4 authors, 2021-10-13

Re: [PATCH v1] Bluetooth: btintel: Fix bdaddress comparison with garbage value

From: Tedd Ho-Jeong An <hidden>
Date: 2021-10-06 04:14:23

On Tue, 2021-10-05 at 09:56 +0530, Kiran K wrote:
Intel Read Verision(TLV) data is parsed into a local structure
variable
and it contains a field for bd address. Bd address is returned only
in
bootloader mode and hence bd address in TLV structure needs to be
validated
only if controller is present in boot loader mode.
Reviewed-by: Tedd Ho-Jeong An <redacted>
quoted hunk ↗ jump to hunk
Signed-off-by: Kiran K <redacted>
---
 drivers/bluetooth/btintel.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/drivers/bluetooth/btintel.c
b/drivers/bluetooth/btintel.c
index 9359bff47296..d1703cc99705 100644
--- a/drivers/bluetooth/btintel.c
+++ b/drivers/bluetooth/btintel.c
@@ -2081,14 +2081,16 @@ static int
btintel_prepare_fw_download_tlv(struct hci_dev *hdev,
 	if (ver->img_type == 0x03) {
 		btintel_clear_flag(hdev, INTEL_BOOTLOADER);
 		btintel_check_bdaddr(hdev);
-	}
-
-	/* If the OTP has no valid Bluetooth device address, then there
will
-	 * also be no valid address for the operational firmware.
-	 */
-	if (!bacmp(&ver->otp_bd_addr, BDADDR_ANY)) {
-		bt_dev_info(hdev, "No device address configured");
-		set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks);
+	} else {
+		/*
+		 * Check for valid bd address in boot loader mode.
Device
+		 * will be marked as unconfigured if empty bd address
is
+		 * found.
+		 */
+		if (!bacmp(&ver->otp_bd_addr, BDADDR_ANY)) {
+			bt_dev_info(hdev, "No device address
configured");
+			set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev-
quoted
quirks);
+		}
 	}
 
 	btintel_get_fw_name_tlv(ver, fwname, sizeof(fwname), "sfi");
@@ -2466,6 +2468,7 @@ static int btintel_setup_combined(struct
hci_dev *hdev)
 		goto exit_error;
 	}
 
+	memset(&ver_tlv, 0, sizeof(ver_tlv));
 	/* For TLV type device, parse the tlv data */
 	err = btintel_parse_version_tlv(hdev, &ver_tlv, skb);
 	if (err) {
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help