FWIW, here is Claude Opus 4.5's take:
```
● I've found the deadlock. Here's the analysis:
Deadlock Analysis
The Deadlock Chain
Thread 1 (kworker running cfg80211_wiphy_work):
1. Holds the wiphy_lock (cfg80211_wiphy_work runs with wiphy_lock held)
2. Calls: ieee80211_sta_work → ieee80211_destroy_auth_data → ... →
mt7925_mac_link_sta_remove
3. At main.c:1097, calls mt7925_roc_abort_sync(dev)
4. At main.c:461, calls cancel_work_sync(&phy->roc_work) — waits for
roc_work to complete
Thread 2 (phy->roc_work / mt7925_roc_work):
1. Running or pending on the workqueue
2. At main.c:484, calls ieee80211_remain_on_channel_expired(phy->mt76->hw)
3. This mac80211 function needs to acquire the wiphy_lock — blocked
waiting for wiphy_lock
The Classic ABBA Deadlock
Thread 1 (wiphy_work) Thread 2 (roc_work)
───────────────────── ────────────────────
holds wiphy_lock
│
▼
cancel_work_sync(roc_work) running...
│ │
│ (waits) ▼
│◄──────────────────── ieee80211_remain_on_channel_expired()
│
(waits for wiphy_lock)
Location of the Bug
The bug is in main.c:1097 where mt7925_roc_abort_sync(dev) is called from
within mt7925_mac_link_sta_remove(). This function is called from the
wiphy_work context which already holds the wiphy_lock, and
cancel_work_sync() at main.c:461 will deadlock if roc_work is trying to
acquire the same lock via ieee80211_remain_on_channel_expired().
```
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2133863
Title:
MediaTek MT7925 WiFi driver deadlock
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2133863/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs