Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | Date | Mon, 4 Apr 2022 18:22:36 -0400 | From | Steven Rostedt <> | Subject | [PATCH] Bluetooth: hci_qca: Use del_timer_sync() before freeing |
| |
[ Resending due to cut and paste failure of email address ]
From: Steven Rostedt (Google) <rostedt@goodmis.org>
While looking at a crash report on a timer list being corrupted, which usually happens when a timer is freed while still active. This is commonly triggered by code calling del_timer() instead of del_timer_sync() just before freeing.
One possible culprit is the hci_qca driver, which does exactly that.
Cc: stable@vger.kernel.org Fixes: 0ff252c1976da ("Bluetooth: hciuart: Add support QCA chipset for UART") Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> --- diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index f6e91fb432a3..73a8c72b5aae 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -696,8 +696,8 @@ static int qca_close(struct hci_uart *hu) skb_queue_purge(&qca->tx_wait_q); skb_queue_purge(&qca->txq); skb_queue_purge(&qca->rx_memdump_q); - del_timer(&qca->tx_idle_timer); - del_timer(&qca->wake_retrans_timer); + del_timer_sync(&qca->tx_idle_timer); + del_timer_sync(&qca->wake_retrans_timer); destroy_workqueue(qca->workqueue); qca->hu = NULL;
| ![\](/images/icornerr.gif) |