[PATCH 0/5] wifi: ath: avoid IDR mutation while iterating

From: Jiale Yao

Date: Sat Sep 26 2026 - 11:52:31 EST


The ath10k, ath11k, and ath12k cleanup paths walk an IDR while their
callbacks remove the current entry. idr_for_each() retains radix-tree
iterator state across the callback, so that removal can invalidate the
walk.

For ath11k and ath12k full teardown, keep the callback limited to
releasing the supplied skb and leave IDR teardown to the following
idr_destroy(), matching the established SCMI fix. For selective per-vif
cleanup, use idr_for_each_entry() so each iteration starts with a fresh
lookup before removing a matching entry. ath10k also uses
idr_for_each_entry() because its shared TX completion helper must retain
the per-entry removal.

Jiale Yao (5):
wifi: ath10k: avoid IDR mutation during TX cleanup
wifi: ath11k: avoid IDR mutation during pending mgmt TX cleanup
wifi: ath11k: avoid IDR mutation during vif mgmt TX cleanup
wifi: ath12k: avoid IDR mutation during pending mgmt TX cleanup
wifi: ath12k: avoid IDR mutation during vif mgmt TX cleanup

drivers/net/wireless/ath/ath10k/htt_tx.c | 7 +++-
drivers/net/wireless/ath/ath11k/mac.c | 46 +++++++++++++-----------
drivers/net/wireless/ath/ath12k/mac.c | 46 +++++++++++++-----------
3 files changed, 58 insertions(+), 41 deletions(-)

--
2.34.1