Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Bluetooth: btsdio: Check for valid packet type

Check for valid packet type before calling hci_recv_frame which is
inline with what other drivers are doing.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>

authored by

Luiz Augusto von Dentz and committed by
Marcel Holtmann
7e8aeffb 1cc3c10c

+14 -5
+14 -5
drivers/bluetooth/btsdio.c
··· 145 145 146 146 data->hdev->stat.byte_rx += len; 147 147 148 - hci_skb_pkt_type(skb) = hdr[3]; 149 - 150 - err = hci_recv_frame(data->hdev, skb); 151 - if (err < 0) 152 - return err; 148 + switch (hdr[3]) { 149 + case HCI_EVENT_PKT: 150 + case HCI_ACLDATA_PKT: 151 + case HCI_SCODATA_PKT: 152 + case HCI_ISODATA_PKT: 153 + hci_skb_pkt_type(skb) = hdr[3]; 154 + err = hci_recv_frame(data->hdev, skb); 155 + if (err < 0) 156 + return err; 157 + break; 158 + default: 159 + kfree_skb(skb); 160 + return -EINVAL; 161 + } 153 162 154 163 sdio_writeb(data->func, 0x00, REG_PC_RRT, NULL); 155 164