Bluetooth: Fix always checking the blacklist for incoming connections
authorJohan Hedberg <johan.hedberg@intel.com>
Wed, 16 Jul 2014 13:19:21 +0000 (16:19 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 16 Jul 2014 13:21:53 +0000 (15:21 +0200)
We should check the blacklist no matter what, meaning also when we're
not connectable. This patch fixes the respective logic in the function
making the decision whether to accept a connection or not.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_event.c

index e54db7f..cae860b 100644 (file)
@@ -2129,18 +2129,17 @@ static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
                return;
        }
 
-       if (test_bit(HCI_CONNECTABLE, &hdev->dev_flags)) {
-               if (hci_bdaddr_list_lookup(&hdev->blacklist, &ev->bdaddr,
-                                          BDADDR_BREDR)) {
-                       hci_reject_conn(hdev, &ev->bdaddr);
-                       return;
-               }
-       } else {
-               if (!hci_bdaddr_list_lookup(&hdev->whitelist, &ev->bdaddr,
-                                           BDADDR_BREDR)) {
-                       hci_reject_conn(hdev, &ev->bdaddr);
-                       return;
-               }
+       if (hci_bdaddr_list_lookup(&hdev->blacklist, &ev->bdaddr,
+                                  BDADDR_BREDR)) {
+               hci_reject_conn(hdev, &ev->bdaddr);
+               return;
+       }
+
+       if (!test_bit(HCI_CONNECTABLE, &hdev->dev_flags) &&
+           !hci_bdaddr_list_lookup(&hdev->whitelist, &ev->bdaddr,
+                                   BDADDR_BREDR)) {
+                   hci_reject_conn(hdev, &ev->bdaddr);
+                   return;
        }
 
        /* Connection accepted */