* [PATCH] Bluetooth: btmtk: remove redundant memory barrier with helper
@ 2026-10-21 14:51 Arnaud Bonnet
0 siblings, 0 replies; only message in thread
From: Arnaud Bonnet @ 2026-10-21 14:51 UTC (permalink / raw)
To: marcel, luiz.dentz, matthias.bgg, angelogioacchino.delregno
Cc: linux-bluetooth, linux-arm-kernel, linux-mediatek, jkoolstra,
skhan, Arnaud Bonnet
The test_and_clear_bit() call works as a full memory barrier, thus it is
not required to emit a barrier using smp_mb__after_atomic() before
wake_up_bit().
Replace the whole sequence with test_and_clear_wake_up_bit(), which was
introduced later in commit 52d633def56c ("sched: Add
test_and_clear_wake_up_bit() and atomic_dec_and_wake_up()") as a wrapper
for the correct sequence.
Signed-off-by: Arnaud Bonnet <abo@medichon.fr>
---
Tested by building and manually checking generated assembly on x86, arm64
and riscv64.
drivers/bluetooth/btmtk.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/drivers/bluetooth/btmtk.c b/drivers/bluetooth/btmtk.c
index 75483d8230e1..a620e24b6c17 100644
--- a/drivers/bluetooth/btmtk.c
+++ b/drivers/bluetooth/btmtk.c
@@ -607,13 +607,7 @@ static void btmtk_usb_wmt_recv(struct urb *urb)
return;
}
- if (test_and_clear_bit(BTMTK_TX_WAIT_VND_EVT,
- &data->flags)) {
- /* Barrier to sync with other CPUs */
- smp_mb__after_atomic();
- wake_up_bit(&data->flags,
- BTMTK_TX_WAIT_VND_EVT);
- }
+ test_and_clear_wake_up_bit(BTMTK_TX_WAIT_VND_EVT, &data->flags);
kfree(urb->setup_packet);
return;
} else if (urb->status == -ENOENT) {
--
2.53.0
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-21 14:52 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-21 14:51 [PATCH] Bluetooth: btmtk: remove redundant memory barrier with helper Arnaud Bonnet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox