From 2a7db9a9a2fbb088c725688dbf69b49dec6da6f2 Mon Sep 17 00:00:00 2001 From: David P Date: Mon, 10 Jan 2022 00:53:38 -0500 Subject: updpkg: libre/linux-libre-pae 5.15.12-1 Signed-off-by: David P --- ...tintel-Fix-bdaddress-comparison-with-garb.patch | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 libre/linux-libre-pae/0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch (limited to 'libre/linux-libre-pae/0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch') diff --git a/libre/linux-libre-pae/0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch b/libre/linux-libre-pae/0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch new file mode 100644 index 000000000..f279924d7 --- /dev/null +++ b/libre/linux-libre-pae/0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch @@ -0,0 +1,60 @@ +From cbc793d1444eafb47b1cc0062c605b37fe79736f Mon Sep 17 00:00:00 2001 +From: Kiran K +Date: Wed, 13 Oct 2021 13:35:11 +0530 +Subject: [PATCH 5/6] Bluetooth: btintel: Fix bdaddress comparison with garbage + value + +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. + +Signed-off-by: Kiran K +Reviewed-by: Tedd Ho-Jeong An +--- + drivers/bluetooth/btintel.c | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) + +diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c +index f1705b46fc88..b9055a3e61ed 100644 +--- a/drivers/bluetooth/btintel.c ++++ b/drivers/bluetooth/btintel.c +@@ -2006,14 +2006,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->quirks); ++ } + } + + btintel_get_fw_name_tlv(ver, fwname, sizeof(fwname), "sfi"); +@@ -2303,6 +2305,10 @@ static int btintel_setup_combined(struct hci_dev *hdev) + goto exit_error; + } + ++ /* memset ver_tlv to start with clean state as few fields are exclusive ++ * to bootloader mode and are not populated in operational mode ++ */ ++ 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) { +-- +2.34.1 + -- cgit v1.2.3