aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/hci_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bluetooth/hci_core.c')
-rw-r--r--net/bluetooth/hci_core.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 172041e2b15a..f575abdf2b4e 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -3121,13 +3121,16 @@ static bool hci_persistent_key(struct hci_dev *hdev, struct hci_conn *conn,
3121 return false; 3121 return false;
3122} 3122}
3123 3123
3124static bool ltk_type_master(u8 type) 3124static u8 ltk_role(u8 type)
3125{ 3125{
3126 return (type == SMP_LTK); 3126 if (type == SMP_LTK)
3127 return HCI_ROLE_MASTER;
3128
3129 return HCI_ROLE_SLAVE;
3127} 3130}
3128 3131
3129struct smp_ltk *hci_find_ltk(struct hci_dev *hdev, __le16 ediv, __le64 rand, 3132struct smp_ltk *hci_find_ltk(struct hci_dev *hdev, __le16 ediv, __le64 rand,
3130 bool master) 3133 u8 role)
3131{ 3134{
3132 struct smp_ltk *k; 3135 struct smp_ltk *k;
3133 3136
@@ -3135,7 +3138,7 @@ struct smp_ltk *hci_find_ltk(struct hci_dev *hdev, __le16 ediv, __le64 rand,
3135 if (k->ediv != ediv || k->rand != rand) 3138 if (k->ediv != ediv || k->rand != rand)
3136 continue; 3139 continue;
3137 3140
3138 if (ltk_type_master(k->type) != master) 3141 if (ltk_role(k->type) != role)
3139 continue; 3142 continue;
3140 3143
3141 return k; 3144 return k;
@@ -3145,14 +3148,14 @@ struct smp_ltk *hci_find_ltk(struct hci_dev *hdev, __le16 ediv, __le64 rand,
3145} 3148}
3146 3149
3147struct smp_ltk *hci_find_ltk_by_addr(struct hci_dev *hdev, bdaddr_t *bdaddr, 3150struct smp_ltk *hci_find_ltk_by_addr(struct hci_dev *hdev, bdaddr_t *bdaddr,
3148 u8 addr_type, bool master) 3151 u8 addr_type, u8 role)
3149{ 3152{
3150 struct smp_ltk *k; 3153 struct smp_ltk *k;
3151 3154
3152 list_for_each_entry(k, &hdev->long_term_keys, list) 3155 list_for_each_entry(k, &hdev->long_term_keys, list)
3153 if (addr_type == k->bdaddr_type && 3156 if (addr_type == k->bdaddr_type &&
3154 bacmp(bdaddr, &k->bdaddr) == 0 && 3157 bacmp(bdaddr, &k->bdaddr) == 0 &&
3155 ltk_type_master(k->type) == master) 3158 ltk_role(k->type) == role)
3156 return k; 3159 return k;
3157 3160
3158 return NULL; 3161 return NULL;
@@ -3247,9 +3250,9 @@ struct smp_ltk *hci_add_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr,
3247 u8 tk[16], u8 enc_size, __le16 ediv, __le64 rand) 3250 u8 tk[16], u8 enc_size, __le16 ediv, __le64 rand)
3248{ 3251{
3249 struct smp_ltk *key, *old_key; 3252 struct smp_ltk *key, *old_key;
3250 bool master = ltk_type_master(type); 3253 u8 role = ltk_role(type);
3251 3254
3252 old_key = hci_find_ltk_by_addr(hdev, bdaddr, addr_type, master); 3255 old_key = hci_find_ltk_by_addr(hdev, bdaddr, addr_type, role);
3253 if (old_key) 3256 if (old_key)
3254 key = old_key; 3257 key = old_key;
3255 else { 3258 else {