summarylogtreecommitdiffstats
path: root/0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch
diff options
context:
space:
mode:
authorgraysky2021-12-02 13:29:09 -0500
committergraysky2021-12-02 13:29:09 -0500
commitc672fca78fb190f2608710dc1106875479151b35 (patch)
tree55dd3f3545f82e8957c7cde181f42e77fdc4cc05 /0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch
parentae52675a9e2cdfdc66372678a9bf249f86c72ce3 (diff)
downloadaur-c672fca78fb190f2608710dc1106875479151b35.tar.gz
Update to 5.15.6-1
Diffstat (limited to '0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch')
-rw-r--r--0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch b/0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch
new file mode 100644
index 000000000000..9b038eb90383
--- /dev/null
+++ b/0005-Bluetooth-btintel-Fix-bdaddress-comparison-with-garb.patch
@@ -0,0 +1,60 @@
+From ae3386d67597db29ad2ba2685815e224a39897bc Mon Sep 17 00:00:00 2001
+From: Kiran K <kiran.k@intel.com>
+Date: Wed, 13 Oct 2021 13:35:11 +0530
+Subject: [PATCH 5/8] 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 <kiran.k@intel.com>
+Reviewed-by: Tedd Ho-Jeong An <tedd.an@intel.com>
+---
+ 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
+