Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_add_adv_monitor()

[ Upstream commit a2bcd2b632 ]

KSAN reports use-after-free in hci_add_adv_monitor().

While adding an adv monitor,
    hci_add_adv_monitor() calls ->
    msft_add_monitor_pattern() calls ->
    msft_add_monitor_sync() calls ->
    msft_le_monitor_advertisement_cb() calls in an error case ->
    hci_free_adv_monitor() which frees the *moniter.

This is referenced by bt_dev_dbg() in hci_add_adv_monitor().

Fix the bt_dev_dbg() by using handle instead of monitor->handle.

Fixes: b747a83690 ("Bluetooth: hci_sync: Refactor add Adv Monitor")
Signed-off-by: Manish Mandlik <mmandlik@google.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Manish Mandlik 2023-08-04 11:14:45 -07:00 committed by Greg Kroah-Hartman
parent bd39b55240
commit 81d8e9f59d
1 changed files with 1 additions and 1 deletions

View File

@ -1957,7 +1957,7 @@ int hci_add_adv_monitor(struct hci_dev *hdev, struct adv_monitor *monitor)
case HCI_ADV_MONITOR_EXT_MSFT: case HCI_ADV_MONITOR_EXT_MSFT:
status = msft_add_monitor_pattern(hdev, monitor); status = msft_add_monitor_pattern(hdev, monitor);
bt_dev_dbg(hdev, "add monitor %d msft status %d", bt_dev_dbg(hdev, "add monitor %d msft status %d",
monitor->handle, status); handle, status);
break; break;
} }