Loading include/net/bluetooth/hci.h +9 −0 Original line number Diff line number Diff line Loading @@ -246,6 +246,15 @@ enum { #define HCI_AT_GENERAL_BONDING 0x04 #define HCI_AT_GENERAL_BONDING_MITM 0x05 /* Link Key types */ #define HCI_LK_COMBINATION 0x00 #define HCI_LK_LOCAL_UNIT 0x01 #define HCI_LK_REMOTE_UNIT 0x02 #define HCI_LK_DEBUG_COMBINATION 0x03 #define HCI_LK_UNAUTH_COMBINATION 0x04 #define HCI_LK_AUTH_COMBINATION 0x05 #define HCI_LK_CHANGED_COMBINATION 0x06 /* ----- HCI Commands ---- */ #define HCI_OP_NOP 0x0000 Loading net/bluetooth/hci_core.c +1 −1 Original line number Diff line number Diff line Loading @@ -1050,7 +1050,7 @@ int hci_add_link_key(struct hci_dev *hdev, int new_key, bdaddr_t *bdaddr, if (new_key) mgmt_new_key(hdev->id, key, old_key_type); if (type == 0x06) if (type == HCI_LK_CHANGED_COMBINATION) key->type = old_key_type; return 0; Loading net/bluetooth/hci_event.c +4 −3 Original line number Diff line number Diff line Loading @@ -2053,15 +2053,16 @@ static inline void hci_link_key_request_evt(struct hci_dev *hdev, struct sk_buff BT_DBG("%s found key type %u for %s", hdev->name, key->type, batostr(&ev->bdaddr)); if (!test_bit(HCI_DEBUG_KEYS, &hdev->flags) && key->type == 0x03) { if (!test_bit(HCI_DEBUG_KEYS, &hdev->flags) && key->type == HCI_LK_DEBUG_COMBINATION) { BT_DBG("%s ignoring debug key", hdev->name); goto not_found; } conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr); if (key->type == 0x04 && conn && conn->auth_type != 0xff && (conn->auth_type & 0x01)) { if (key->type == HCI_LK_UNAUTH_COMBINATION && conn && conn->auth_type != 0xff && (conn->auth_type & 0x01)) { BT_DBG("%s ignoring unauthenticated key", hdev->name); goto not_found; } Loading Loading
include/net/bluetooth/hci.h +9 −0 Original line number Diff line number Diff line Loading @@ -246,6 +246,15 @@ enum { #define HCI_AT_GENERAL_BONDING 0x04 #define HCI_AT_GENERAL_BONDING_MITM 0x05 /* Link Key types */ #define HCI_LK_COMBINATION 0x00 #define HCI_LK_LOCAL_UNIT 0x01 #define HCI_LK_REMOTE_UNIT 0x02 #define HCI_LK_DEBUG_COMBINATION 0x03 #define HCI_LK_UNAUTH_COMBINATION 0x04 #define HCI_LK_AUTH_COMBINATION 0x05 #define HCI_LK_CHANGED_COMBINATION 0x06 /* ----- HCI Commands ---- */ #define HCI_OP_NOP 0x0000 Loading
net/bluetooth/hci_core.c +1 −1 Original line number Diff line number Diff line Loading @@ -1050,7 +1050,7 @@ int hci_add_link_key(struct hci_dev *hdev, int new_key, bdaddr_t *bdaddr, if (new_key) mgmt_new_key(hdev->id, key, old_key_type); if (type == 0x06) if (type == HCI_LK_CHANGED_COMBINATION) key->type = old_key_type; return 0; Loading
net/bluetooth/hci_event.c +4 −3 Original line number Diff line number Diff line Loading @@ -2053,15 +2053,16 @@ static inline void hci_link_key_request_evt(struct hci_dev *hdev, struct sk_buff BT_DBG("%s found key type %u for %s", hdev->name, key->type, batostr(&ev->bdaddr)); if (!test_bit(HCI_DEBUG_KEYS, &hdev->flags) && key->type == 0x03) { if (!test_bit(HCI_DEBUG_KEYS, &hdev->flags) && key->type == HCI_LK_DEBUG_COMBINATION) { BT_DBG("%s ignoring debug key", hdev->name); goto not_found; } conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr); if (key->type == 0x04 && conn && conn->auth_type != 0xff && (conn->auth_type & 0x01)) { if (key->type == HCI_LK_UNAUTH_COMBINATION && conn && conn->auth_type != 0xff && (conn->auth_type & 0x01)) { BT_DBG("%s ignoring unauthenticated key", hdev->name); goto not_found; } Loading