]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Bluetooth: mgmt: Fix address type while loading Long Term Key
authorHemant Gupta <hemant.gupta@stericsson.com>
Mon, 16 Apr 2012 09:27:40 +0000 (14:57 +0530)
committerJohan Hedberg <johan.hedberg@intel.com>
Mon, 16 Apr 2012 09:37:12 +0000 (12:37 +0300)
This patch fixes the address type while loading long term keys when BT is
switched on. Without this fix pairing is reinitated even though LTK
exists for remote device because of mismatch of address type.

Signed-off-by: Hemant Gupta <hemant.gupta@stericsson.com>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
net/bluetooth/mgmt.c

index 7bb3af81f00597901f61bae57aca31cbf11c1f09..5d0cde8d199508e3329cc6db42230fab01be94fe 100644 (file)
@@ -1644,6 +1644,18 @@ static u8 link_to_mgmt(u8 link_type, u8 addr_type)
        }
 }
 
+static u8 mgmt_to_le(u8 mgmt_type)
+{
+       switch (mgmt_type) {
+       case MGMT_ADDR_LE_PUBLIC:
+               return ADDR_LE_DEV_PUBLIC;
+
+       default:
+               /* Fallback to LE Random address type */
+               return ADDR_LE_DEV_RANDOM;
+       }
+}
+
 static int get_connections(struct sock *sk, struct hci_dev *hdev, void *data,
                           u16 data_len)
 {
@@ -2652,7 +2664,8 @@ static int load_long_term_keys(struct sock *sk, struct hci_dev *hdev,
                else
                        type = HCI_SMP_LTK_SLAVE;
 
-               hci_add_ltk(hdev, &key->addr.bdaddr, key->addr.type,
+               hci_add_ltk(hdev, &key->addr.bdaddr,
+                           mgmt_to_le(key->addr.type),
                            type, 0, key->authenticated, key->val,
                            key->enc_size, key->ediv, key->rand);
        }