Bluetooth: Fix using a NULL inquiry cache entry
If the device was not found in a list of found devices names of which are pending.This may happen in a case when HCI Remote Name Request was sent as a part of incoming connection establishment procedure. Hence there is no need to continue resolving a next name as it will be done upon receiving another Remote Name Request Complete Event. This will fix a kernel crash when trying to use this entry to resolve the next name. Cc: stable@vger.kernel.org Signed-off-by: Ram Malovany <ramm@ti.com> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
This commit is contained in:
parent
c810089c27
commit
7cc8380eb1
|
@ -1396,12 +1396,18 @@ static void hci_check_pending_name(struct hci_dev *hdev, struct hci_conn *conn,
|
|||
return;
|
||||
|
||||
e = hci_inquiry_cache_lookup_resolve(hdev, bdaddr, NAME_PENDING);
|
||||
if (e) {
|
||||
/* If the device was not found in a list of found devices names of which
|
||||
* are pending. there is no need to continue resolving a next name as it
|
||||
* will be done upon receiving another Remote Name Request Complete
|
||||
* Event */
|
||||
if (!e)
|
||||
return;
|
||||
|
||||
list_del(&e->list);
|
||||
if (name) {
|
||||
e->name_state = NAME_KNOWN;
|
||||
list_del(&e->list);
|
||||
if (name)
|
||||
mgmt_remote_name(hdev, bdaddr, ACL_LINK, 0x00,
|
||||
e->data.rssi, name, name_len);
|
||||
mgmt_remote_name(hdev, bdaddr, ACL_LINK, 0x00,
|
||||
e->data.rssi, name, name_len);
|
||||
}
|
||||
|
||||
if (hci_resolve_next_name(hdev))
|
||||
|
|
Loading…
Reference in New Issue