|
@@ -2197,7 +2197,12 @@ static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (!test_bit(HCI_CONNECTABLE, &hdev->dev_flags) &&
|
|
|
+ /* Require HCI_CONNECTABLE or a whitelist entry to accept the
|
|
|
+ * connection. These features are only touched through mgmt so
|
|
|
+ * only do the checks if HCI_MGMT is set.
|
|
|
+ */
|
|
|
+ if (test_bit(HCI_MGMT, &hdev->dev_flags) &&
|
|
|
+ !test_bit(HCI_CONNECTABLE, &hdev->dev_flags) &&
|
|
|
!hci_bdaddr_list_lookup(&hdev->whitelist, &ev->bdaddr,
|
|
|
BDADDR_BREDR)) {
|
|
|
hci_reject_conn(hdev, &ev->bdaddr);
|