CVE-2026-23130 PUBLISHED

wifi: ath12k: fix dead lock while flushing management frames

Assigner: Linux
Reserved: 13.01.2026 Published: 14.02.2026 Updated: 14.02.2026

In the Linux kernel, the following vulnerability has been resolved:

wifi: ath12k: fix dead lock while flushing management frames

Commit [1] converted the management transmission work item into a wiphy work. Since a wiphy work can only run under wiphy lock protection, a race condition happens in below scenario:

  1. a management frame is queued for transmission.
  2. ath12k_mac_op_flush() gets called to flush pending frames associated with the hardware (i.e, vif being NULL). Then in ath12k_mac_flush() the process waits for the transmission done.
  3. Since wiphy lock has been taken by the flush process, the transmission work item has no chance to run, hence the dead lock.

From user view, this dead lock results in below issue:

wlp8s0: authenticate with xxxxxx (local address=xxxxxx) wlp8s0: send auth to xxxxxx (try 1/3) wlp8s0: authenticate with xxxxxx (local address=xxxxxx) wlp8s0: send auth to xxxxxx (try 1/3) wlp8s0: authenticated wlp8s0: associate with xxxxxx (try 1/3) wlp8s0: aborting association with xxxxxx by local choice (Reason: 3=DEAUTH_LEAVING) ath12k_pci 0000:08:00.0: failed to flush mgmt transmit queue, mgmt pkts pending 1

The dead lock can be avoided by invoking wiphy_work_flush() to proactively run the queued work item. Note actually it is already present in ath12k_mac_op_flush(), however it does not protect the case where vif being NULL. Hence move it ahead to cover this case as well.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from 56dcbf0b520796e26b2bbe5686bdd305ad924954 to 06ac2aa13f701a0296e92f5f54ae24224d426b28 (excl.)
  • affected from 56dcbf0b520796e26b2bbe5686bdd305ad924954 to f88e9fc30a261d63946ddc6cc6a33405e6aa27c3 (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 6.14 is affected
  • unaffected from 0 to 6.14 (excl.)
  • unaffected from 6.18.8 to 6.18.* (incl.)
  • unaffected from 6.19 to * (incl.)

References