diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 68bfe57b6625..8f1d68ee92f2 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -1235,18 +1235,19 @@ u32 hci_inquiry_cache_update(struct hci_dev *hdev, struct inquiry_data *data, } update: - if (name_known && ie->name_state != NAME_KNOWN && - ie->name_state != NAME_PENDING) { - ie->name_state = NAME_KNOWN; - list_del(&ie->list); - } - memcpy(&ie->data, data, sizeof(*data)); ie->timestamp = jiffies; cache->timestamp = jiffies; if (ie->name_state == NAME_NOT_KNOWN) flags |= MGMT_DEV_FOUND_CONFIRM_NAME; + + if ((name_known) && (ie->name_state != NAME_KNOWN) && + (ie->name_state != NAME_PENDING)) { + ie->name_state = NAME_KNOWN; + list_del(&ie->list); + kfree(&ie->list); + } done: return flags;