wifi: mt76: mt7615: avoid waiting for mac work under the mt76 mutex
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50, and 1 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: wifi: mt76: mt7615: avoid waiting for mac work under the mt76 mutex mt7615_suspend() acquired the mt76 mutex and then called cancel_delayed_work_sync() on mac_work. mt7615_mac_work() acquires the same mutex via mt7615_mutex_acquire() at the top of the worker, so if mac_work is already running and blocked on the mutex, the suspend path deadlocks waiting for the work it holds the mutex against. Flush scan_work and mac_work before taking the mutex, matching the suspend paths in mt7921 and mt7925. scan_work only takes the mt76 spinlock, but moving it keeps the sequence consistent. This also keeps mac_work from running over an already suspended HIF, which the previous split (async cancel under the lock, sync cancel after release) would have allowed.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From c6bf20109a3fae92402cb76ad709ec5256bcd169 · fixed in 36c73b86a09f0e51c0f81a75c8945b6c5557ff27; From c6bf20109a3fae92402cb76ad709ec5256bcd169 · fixed in 33d29aeb4c0eede92622a7d04ea492b94c30f089; From c6bf20109a3fae92402cb76ad709ec5256bcd169 · fixed in ef2ec8b537c3a54e241d693bd03016f80d0d4484; From c6bf20109a3fae92402cb76ad709ec5256bcd169 · fixed in 3114d479f2a1d31b2e6214c395794c6e5715e579; From c6bf20109a3fae92402cb76ad709ec5256bcd169 · fixed in 4506e229b2e468b8c64bcf52c50c41a3bf2e633e; From c6bf20109a3fae92402cb76ad709ec5256bcd169 · fixed in 44be85af3e1772ffb3332feafedad2a73b22854c; From c6bf20109a3fae92402cb76ad709ec5256bcd169 · fixed in bda8324270b1ac91bfba1df8928e0570e29759e8
- Linux Linux
5.8
- KernelLinux
From 5.8.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.109; From 6.13.0 · fixed in 6.18.50; From 6.19.0 · fixed in 7.2.4
References 7
git.kernel.org
- stable/c/36c73b86a09f0e51c0f81a75c8945b6c5557ff27
- stable/c/33d29aeb4c0eede92622a7d04ea492b94c30f089
- stable/c/ef2ec8b537c3a54e241d693bd03016f80d0d4484
- stable/c/3114d479f2a1d31b2e6214c395794c6e5715e579
- stable/c/4506e229b2e468b8c64bcf52c50c41a3bf2e633e
- stable/c/44be85af3e1772ffb3332feafedad2a73b22854c
- stable/c/bda8324270b1ac91bfba1df8928e0570e29759e8