diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-04-21 02:13:00 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-04-21 02:13:00 +0100 |
commit | bffbad1c6c7cfd8e59b5609c1f298c530d6f3dc0 (patch) | |
tree | f68c98fde96c57e94b309b8b11294df16429b574 /sys-kernel/linux-image-redcore-lts/files/5.15-0005-Bluetooth_btintel_Fix_bdaddress_comparison_with_garbage_value.patch | |
parent | 076ddede5efb81dd30aee12b999a7cccc4776983 (diff) |
sys-kernel/linux-{image,sources}-redcore-lts : version bump
Diffstat (limited to 'sys-kernel/linux-image-redcore-lts/files/5.15-0005-Bluetooth_btintel_Fix_bdaddress_comparison_with_garbage_value.patch')
-rw-r--r-- | sys-kernel/linux-image-redcore-lts/files/5.15-0005-Bluetooth_btintel_Fix_bdaddress_comparison_with_garbage_value.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/sys-kernel/linux-image-redcore-lts/files/5.15-0005-Bluetooth_btintel_Fix_bdaddress_comparison_with_garbage_value.patch b/sys-kernel/linux-image-redcore-lts/files/5.15-0005-Bluetooth_btintel_Fix_bdaddress_comparison_with_garbage_value.patch new file mode 100644 index 00000000..3697425a --- /dev/null +++ b/sys-kernel/linux-image-redcore-lts/files/5.15-0005-Bluetooth_btintel_Fix_bdaddress_comparison_with_garbage_value.patch @@ -0,0 +1,57 @@ +From a6d4fb4f5e7fe795d9e3b28b261a0f86f1026d03 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] 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 f1705b46fc889..b9055a3e61ed7 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) { |