Skip to content

Commit ac1cccb

Browse files
Vudentzopsiff
authored andcommitted
Bluetooth: MGMT: Fix dangling pointer on mgmt_add_adv_patterns_monitor_complete
commit 5f5fa4cd35f707344f65ce9e225b6528691dbbaa upstream. This fixes the condition checking so mgmt_pending_valid is executed whenever status != -ECANCELED otherwise calling mgmt_pending_free(cmd) would kfree(cmd) without unlinking it from the list first, leaving a dangling pointer. Any subsequent list traversal (e.g., mgmt_pending_foreach during __mgmt_power_off, or another mgmt_pending_valid call) would dereference freed memory. Link: https://lore.kernel.org/linux-bluetooth/20260315132013.75ab40c5@kernel.org/T/#m1418f9c82eeff8510c1beaa21cf53af20db96c06 Fixes: 302a1f6 ("Bluetooth: MGMT: Fix possible UAFs") Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit 2074dfffad76981ca451cb7fc98703d04ac562fe) Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
1 parent 0016e1c commit ac1cccb

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

net/bluetooth/mgmt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5332,7 +5332,7 @@ static void mgmt_add_adv_patterns_monitor_complete(struct hci_dev *hdev,
53325332
* hci_adv_monitors_clear is about to be called which will take care of
53335333
* freeing the adv_monitor instances.
53345334
*/
5335-
if (status == -ECANCELED && !mgmt_pending_valid(hdev, cmd))
5335+
if (status == -ECANCELED || !mgmt_pending_valid(hdev, cmd))
53365336
return;
53375337

53385338
monitor = cmd->user_data;

0 commit comments

Comments
 (0)