Bluetooth: Fix missing rcu_read_unlock() in hci_bdaddr_is_paired()
authorJohan Hedberg <johan.hedberg@intel.com>
Wed, 11 Mar 2015 06:55:51 +0000 (08:55 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 11 Mar 2015 07:52:32 +0000 (08:52 +0100)
When finding a matching LTK the rcu_read_unlock() function was failing
to release the RCU read lock. This patch adds the missing call to
rcu_reaD_unlock().

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

index a35d844..4eba9d6 100644 (file)
@@ -2535,8 +2535,10 @@ bool hci_bdaddr_is_paired(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)
 
        rcu_read_lock();
        list_for_each_entry_rcu(k, &hdev->long_term_keys, list) {
-               if (k->bdaddr_type == addr_type && !bacmp(bdaddr, &k->bdaddr))
+               if (k->bdaddr_type == addr_type && !bacmp(bdaddr, &k->bdaddr)) {
+                       rcu_read_unlock();
                        return true;
+               }
        }
        rcu_read_unlock();