From: <gregkh@linuxfoundation.org>
To: Julia.Lawall@inria.fr,aha310510@gmail.com,akpm@linux-foundation.org,anna-maria@linutronix.de,arnd@arndb.de,gregkh@linuxfoundation.org,jacob.e.keller@intel.com,linux-staging@lists.linux.dev,linux@roeck-us.net,luiz.dentz@gmail.com,marcel@holtmann.org,maz@kernel.org,peterz@infradead.org,rostedt@goodmis.org,sboyd@kernel.org,tglx@linutronix.de,viresh.kumar@linaro.org
Cc: <stable-commits@vger.kernel.org>
Subject: Patch "Bluetooth: hci_qca: Fix the teardown problem for real" has been added to the 5.15-stable tree
Date: Sat, 07 Feb 2026 16:43:00 +0100 [thread overview]
Message-ID: <2026020700-bully-lego-19a7@gregkh> (raw)
In-Reply-To: <20251128160539.358938-15-aha310510@gmail.com>
This is a note to let you know that I've just added the patch titled
Bluetooth: hci_qca: Fix the teardown problem for real
to the 5.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
bluetooth-hci_qca-fix-the-teardown-problem-for-real.patch
and it can be found in the queue-5.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.
From aha310510@gmail.com Fri Nov 28 17:07:07 2025
From: Jeongjun Park <aha310510@gmail.com>
Date: Sat, 29 Nov 2025 01:05:39 +0900
Subject: Bluetooth: hci_qca: Fix the teardown problem for real
To: stable@vger.kernel.org
Cc: gregkh@linuxfoundation.org, tglx@linutronix.de, Julia.Lawall@inria.fr, akpm@linux-foundation.org, anna-maria@linutronix.de, arnd@arndb.de, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, luiz.dentz@gmail.com, marcel@holtmann.org, maz@kernel.org, peterz@infradead.org, rostedt@goodmis.org, sboyd@kernel.org, viresh.kumar@linaro.org, aha310510@gmail.com, linux-staging@lists.linux.dev, Jacob Keller <jacob.e.keller@intel.com>
Message-ID: <20251128160539.358938-15-aha310510@gmail.com>
From: Thomas Gleixner <tglx@linutronix.de>
[ Upstream commit e0d3da982c96aeddc1bbf1cf9469dbb9ebdca657 ]
While discussing solutions for the teardown problem which results from
circular dependencies between timers and workqueues, where timers schedule
work from their timer callback and workqueues arm the timers from work
items, it was discovered that the recent fix to the QCA code is incorrect.
That commit fixes the obvious problem of using del_timer() instead of
del_timer_sync() and reorders the teardown calls to
destroy_workqueue(wq);
del_timer_sync(t);
This makes it less likely to explode, but it's still broken:
destroy_workqueue(wq);
/* After this point @wq cannot be touched anymore */
---> timer expires
queue_work(wq) <---- Results in a NULL pointer dereference
deep in the work queue core code.
del_timer_sync(t);
Use the new timer_shutdown_sync() function to ensure that the timers are
disarmed, no timer callbacks are running and the timers cannot be armed
again. This restores the original teardown sequence:
timer_shutdown_sync(t);
destroy_workqueue(wq);
which is now correct because the timer core silently ignores potential
rearming attempts which can happen when destroy_workqueue() drains pending
work before mopping up the workqueue.
Fixes: 72ef98445aca ("Bluetooth: hci_qca: Use del_timer_sync() before freeing")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
Acked-by: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Link: https://lore.kernel.org/all/87iljhsftt.ffs@tglx
Link: https://lore.kernel.org/r/20221123201625.435907114@linutronix.de
Signed-off-by: Jeongjun Park <aha310510@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/bluetooth/hci_qca.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -709,9 +709,15 @@ 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);
+ /*
+ * Shut the timers down so they can't be rearmed when
+ * destroy_workqueue() drains pending work which in turn might try
+ * to arm a timer. After shutdown rearm attempts are silently
+ * ignored by the timer core code.
+ */
+ timer_shutdown_sync(&qca->tx_idle_timer);
+ timer_shutdown_sync(&qca->wake_retrans_timer);
destroy_workqueue(qca->workqueue);
- del_timer_sync(&qca->tx_idle_timer);
- del_timer_sync(&qca->wake_retrans_timer);
qca->hu = NULL;
kfree_skb(qca->rx_skb);
Patches currently in stable-queue which might be from aha310510@gmail.com are
queue-5.15/timers-update-the-documentation-to-reflect-on-the-new-timer_shutdown-api.patch
queue-5.15/clocksource-drivers-arm_arch_timer-do-not-use-timer-namespace-for-timer_shutdown-function.patch
queue-5.15/timers-split-del_timer-to-prepare-for-shutdown-mode.patch
queue-5.15/arm-spear-do-not-use-timer-namespace-for-timer_shutdown-function.patch
queue-5.15/timers-add-shutdown-mechanism-to-the-internal-functions.patch
queue-5.15/timers-provide-timer_shutdown.patch
queue-5.15/timers-rename-del_timer-to-timer_delete.patch
queue-5.15/timers-replace-bug_on-s.patch
queue-5.15/bluetooth-hci_qca-fix-the-teardown-problem-for-real.patch
queue-5.15/documentation-replace-del_timer-del_timer_sync.patch
queue-5.15/documentation-remove-bogus-claim-about-del_timer_sync.patch
queue-5.15/timers-silently-ignore-timers-with-a-null-function.patch
queue-5.15/timers-get-rid-of-del_singleshot_timer_sync.patch
queue-5.15/clocksource-drivers-sp804-do-not-use-timer-namespace-for-timer_shutdown-function.patch
next prev parent reply other threads:[~2026-02-07 15:43 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-28 16:05 [PATCH 5.15.y 00/14] timers: Provide timer_shutdown[_sync]() Jeongjun Park
2025-11-28 16:05 ` [PATCH 5.15.y 01/14] Documentation: Remove bogus claim about del_timer_sync() Jeongjun Park
2026-02-07 15:43 ` Patch "Documentation: Remove bogus claim about del_timer_sync()" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 02/14] ARM: spear: Do not use timer namespace for timer_shutdown() function Jeongjun Park
2026-02-07 15:42 ` Patch "ARM: spear: Do not use timer namespace for timer_shutdown() function" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 03/14] clocksource/drivers/arm_arch_timer: Do not use timer namespace for timer_shutdown() function Jeongjun Park
2026-02-07 15:43 ` Patch "clocksource/drivers/arm_arch_timer: Do not use timer namespace for timer_shutdown() function" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 04/14] clocksource/drivers/sp804: Do not use timer namespace for timer_shutdown() function Jeongjun Park
2026-02-07 15:43 ` Patch "clocksource/drivers/sp804: Do not use timer namespace for timer_shutdown() function" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 05/14] timers: Get rid of del_singleshot_timer_sync() Jeongjun Park
2026-02-07 15:43 ` Patch "timers: Get rid of del_singleshot_timer_sync()" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 06/14] timers: Replace BUG_ON()s Jeongjun Park
2026-02-07 15:43 ` Patch "timers: Replace BUG_ON()s" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 07/14] timers: Rename del_timer() to timer_delete() Jeongjun Park
2026-02-07 15:43 ` Patch "timers: Rename del_timer() to timer_delete()" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 08/14] Documentation: Replace del_timer/del_timer_sync() Jeongjun Park
2026-02-07 15:43 ` Patch "Documentation: Replace del_timer/del_timer_sync()" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 09/14] timers: Silently ignore timers with a NULL function Jeongjun Park
2026-02-07 15:43 ` Patch "timers: Silently ignore timers with a NULL function" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 10/14] timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode Jeongjun Park
2026-02-07 15:43 ` Patch "timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 11/14] timers: Add shutdown mechanism to the internal functions Jeongjun Park
2026-02-07 15:43 ` Patch "timers: Add shutdown mechanism to the internal functions" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 12/14] timers: Provide timer_shutdown[_sync]() Jeongjun Park
2026-02-07 15:43 ` Patch "timers: Provide timer_shutdown[_sync]()" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 13/14] timers: Update the documentation to reflect on the new timer_shutdown() API Jeongjun Park
2026-02-07 15:43 ` Patch "timers: Update the documentation to reflect on the new timer_shutdown() API" has been added to the 5.15-stable tree gregkh
2025-11-28 16:05 ` [PATCH 5.15.y 14/14] Bluetooth: hci_qca: Fix the teardown problem for real Jeongjun Park
2026-02-07 15:43 ` gregkh [this message]
2026-02-07 15:42 ` [PATCH 5.15.y 00/14] timers: Provide timer_shutdown[_sync]() Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2026020700-bully-lego-19a7@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=Julia.Lawall@inria.fr \
--cc=aha310510@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=anna-maria@linutronix.de \
--cc=arnd@arndb.de \
--cc=jacob.e.keller@intel.com \
--cc=linux-staging@lists.linux.dev \
--cc=linux@roeck-us.net \
--cc=luiz.dentz@gmail.com \
--cc=marcel@holtmann.org \
--cc=maz@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sboyd@kernel.org \
--cc=stable-commits@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=viresh.kumar@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox