[RFC PATCH 00/12] wifi: AP side locking improvements

Johannes Berg johannes at sipsolutions.net
Tue Oct 6 00:14:59 PDT 2026


On Mon, 2026-10-05 at 19:05 -0700, Jeff Johnson wrote:
> With both the redux and this series applied, I prompted my review agent:
> prior to the 2 patchsets (18 patches and 12 patches) ath12k relied upon the
> wiphy mutex to serialize many of the mac80211 operations. are any ath12k
> object references now subject to new race conditions with this entire set of
> 30 patches applied?

:)

> The reply:
> <LLM>
> New Race: ath12k_reg_notifier vs ath12k_mac_op_start/ath12k_mac_op_stop on
> ah->state

That's a fair point, but easy to resolve - we can just lock the wiphy in
the loop of notify_self_managed_wiphys(). It already can't go away since
we have cfg80211_mutex. Looking slightly deeper, we should guarantee
that we hold the wiphy mutex for a bunch of these operations to the
driver, and that needs more than a single line of code, but looks
totally doable.

> Pre-existing but Newly Exposed: ath12k_regd_update vs ath12k_reg_notifier on
> ah->regd_updated
> 
> ath12k_regd_update() is called from ath12k_regd_update_work (a workqueue) and
> reads then writes ah->regd_updated with no lock at all. ath12k_reg_notifier()
> writes ah->regd_updated = false also with no lock. These two were already
> concurrent before the series — workqueue items are not serialized by RTNL — so
> this is not a new problem introduced by the patches. However, RTNL previously
> prevented the reg notifier from being called while a mac op was running,
> which reduced the window. That window is now wider.

I don't think it's correct about that widening very much, "RTNL ...
prevented ... while a mac op was running" isn't true for most
operations, only start/stop (roughly), and e.g. sta_state changes the
state here.

But you'll need to fix that locally in the driver anyway.


I'm working also on adding clang context analysis to all of this, but
I've only _just_ (yesterday) worked out our internal build systems to
have clang 23 to be able to actually validate it, and will obviously
need to redo the (very small) adjustments in cfg80211 on top of this
series. Then we can annotate such things with clang and the right lock.

johannes



More information about the ath12k mailing list