Skip to content

Commit 55fb52f

Browse files
pvVudentz
authored andcommitted
Bluetooth: MGMT: cancel mesh send timer when hdev removed
mesh_send_done timer is not canceled when hdev is removed, which causes crash if the timer triggers after hdev is gone. Cancel the timer when MGMT removes the hdev, like other MGMT timers. Should fix the BUG: sporadically seen by BlueZ test bot (in "Mesh - Send cancel - 1" test). Log: ------ BUG: KASAN: slab-use-after-free in run_timer_softirq+0x76b/0x7d0 ... Freed by task 36: kasan_save_stack+0x24/0x50 kasan_save_track+0x14/0x30 __kasan_save_free_info+0x3a/0x60 __kasan_slab_free+0x43/0x70 kfree+0x103/0x500 device_release+0x9a/0x210 kobject_put+0x100/0x1e0 vhci_release+0x18b/0x240 ------ Fixes: b338d91 ("Bluetooth: Implement support for Mesh") Link: https://lore.kernel.org/linux-bluetooth/67364c09.0c0a0220.113cba.39ff@mx.google.com/ Signed-off-by: Pauli Virtanen <pav@iki.fi> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
1 parent 96a9178 commit 55fb52f

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

net/bluetooth/mgmt.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9497,6 +9497,7 @@ void mgmt_index_removed(struct hci_dev *hdev)
94979497
cancel_delayed_work_sync(&hdev->discov_off);
94989498
cancel_delayed_work_sync(&hdev->service_cache);
94999499
cancel_delayed_work_sync(&hdev->rpa_expired);
9500+
cancel_delayed_work_sync(&hdev->mesh_send_done);
95009501
}
95019502

95029503
void mgmt_power_on(struct hci_dev *hdev, int err)

0 commit comments

Comments
 (0)