Skip to content

Commit 9e11e0d

Browse files
Vudentzgregkh
authored andcommitted
Bluetooth: btintel: Check if controller is ISO capable on btintel_classify_pkt_type
commit 6ec3185 upstream. Due to what seem to be a bug with variant version returned by some firmwares the code may set hdev->classify_pkt_type with btintel_classify_pkt_type when in fact the controller doesn't even support ISO channels feature but may use the handle range expected from a controllers that does causing the packets to be reclassified as ISO causing several bugs. To fix the above btintel_classify_pkt_type will attempt to check if the controller really supports ISO channels and in case it doesn't don't reclassify even if the handle range is considered to be ISO, this is considered safer than trying to fix the specific controller/firmware version as that could change over time and causing similar problems in the future. Link: https://bugzilla.kernel.org/show_bug.cgi?id=219553 Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2100565 Link: StarLabsLtd/firmware#180 Fixes: f25b7fd ("Bluetooth: Add vendor-specific packet classification for ISO data") Cc: stable@vger.kernel.org Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Tested-by: Sean Rhodes <sean@starlabs.systems> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 1ddedbd commit 9e11e0d

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/bluetooth/btintel.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2656,7 +2656,7 @@ static u8 btintel_classify_pkt_type(struct hci_dev *hdev, struct sk_buff *skb)
26562656
* Distinguish ISO data packets form ACL data packets
26572657
* based on their connection handle value range.
26582658
*/
2659-
if (hci_skb_pkt_type(skb) == HCI_ACLDATA_PKT) {
2659+
if (iso_capable(hdev) && hci_skb_pkt_type(skb) == HCI_ACLDATA_PKT) {
26602660
__u16 handle = __le16_to_cpu(hci_acl_hdr(skb)->handle);
26612661

26622662
if (hci_handle(handle) >= BTINTEL_ISODATA_HANDLE_BASE)

0 commit comments

Comments
 (0)