Loading include/net/bluetooth/hci.h +5 −0 Original line number Diff line number Diff line Loading @@ -2028,6 +2028,11 @@ struct inquiry_info { __le16 clock_offset; } __packed; struct hci_ev_inquiry_result { __u8 num; struct inquiry_info info[]; }; #define HCI_EV_CONN_COMPLETE 0x03 struct hci_ev_conn_complete { __u8 status; Loading net/bluetooth/hci_event.c +14 −5 Original line number Diff line number Diff line Loading @@ -3180,13 +3180,21 @@ static void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) static void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb) { struct hci_ev_inquiry_result *ev; struct inquiry_data data; struct inquiry_info *info = (void *) (skb->data + 1); int num_rsp = *((__u8 *) skb->data); int i; BT_DBG("%s num_rsp %d", hdev->name, num_rsp); ev = hci_ev_skb_pull(hdev, skb, HCI_EV_INQUIRY_RESULT, sizeof(*ev)); if (!ev) return; if (!num_rsp || skb->len < num_rsp * sizeof(*info) + 1) if (!hci_ev_skb_pull(hdev, skb, HCI_EV_INQUIRY_RESULT, flex_array_size(ev, info, ev->num))) return; BT_DBG("%s num %d", hdev->name, ev->num); if (!ev->num) return; if (hci_dev_test_flag(hdev, HCI_PERIODIC_INQ)) Loading @@ -3194,7 +3202,8 @@ static void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb) hci_dev_lock(hdev); for (; num_rsp; num_rsp--, info++) { for (i = 0; i < ev->num; i++) { struct inquiry_info *info = &ev->info[i]; u32 flags; bacpy(&data.bdaddr, &info->bdaddr); Loading Loading
include/net/bluetooth/hci.h +5 −0 Original line number Diff line number Diff line Loading @@ -2028,6 +2028,11 @@ struct inquiry_info { __le16 clock_offset; } __packed; struct hci_ev_inquiry_result { __u8 num; struct inquiry_info info[]; }; #define HCI_EV_CONN_COMPLETE 0x03 struct hci_ev_conn_complete { __u8 status; Loading
net/bluetooth/hci_event.c +14 −5 Original line number Diff line number Diff line Loading @@ -3180,13 +3180,21 @@ static void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) static void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb) { struct hci_ev_inquiry_result *ev; struct inquiry_data data; struct inquiry_info *info = (void *) (skb->data + 1); int num_rsp = *((__u8 *) skb->data); int i; BT_DBG("%s num_rsp %d", hdev->name, num_rsp); ev = hci_ev_skb_pull(hdev, skb, HCI_EV_INQUIRY_RESULT, sizeof(*ev)); if (!ev) return; if (!num_rsp || skb->len < num_rsp * sizeof(*info) + 1) if (!hci_ev_skb_pull(hdev, skb, HCI_EV_INQUIRY_RESULT, flex_array_size(ev, info, ev->num))) return; BT_DBG("%s num %d", hdev->name, ev->num); if (!ev->num) return; if (hci_dev_test_flag(hdev, HCI_PERIODIC_INQ)) Loading @@ -3194,7 +3202,8 @@ static void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb) hci_dev_lock(hdev); for (; num_rsp; num_rsp--, info++) { for (i = 0; i < ev->num; i++) { struct inquiry_info *info = &ev->info[i]; u32 flags; bacpy(&data.bdaddr, &info->bdaddr); Loading