wifi: mt76: mt7925: ensure tx headroom in usb_sdio_tx_prepare_skb (Linux Linux)
At a glance
- Source
- NVD
- EPSS
- EPSS 0.17 % · percentile 6 ()
- State
- PUBLISHED
- Published
- Updated
- Assigner
- Linux
- NVD status
- Received
Description
In the Linux kernel, the following vulnerability has been resolved: wifi: mt76: mt7925: ensure tx headroom in usb_sdio_tx_prepare_skb mt7925_usb_sdio_tx_prepare_skb() pushes a TX descriptor and a USB header onto every skb and assumes the headroom for them is already there. That holds for locally generated traffic, where mac80211 reserves hw->extra_tx_headroom, but forwarded frames are sent through ieee80211_8023_xmit(), which does not reserve it. Bridge a wired interface to an mt7925u AP and the first forwarded frame that arrives short panics the kernel: skbuff: skb_under_panic: len:415 put:4 tail:0x19b end:0x640 dev:wlan1 kernel BUG at net/core/skbuff.c:212! Call trace: skb_panic+0x58/0x60 (P) skb_push+0x58/0x60 mt7925_usb_sdio_tx_prepare_skb+0xf8/0x1b8 [mt7925_common] mt76u_tx_queue_skb+0xa0/0x1f8 [mt76_usb] __mt76_tx_queue_skb+0x54/0xe8 [mt76] mt76_txq_schedule.part.0+0x204/0x478 [mt76] mt76_txq_schedule_all+0x50/0x80 [mt76] mt792x_tx_worker+0x68/0x100 [mt792x_lib] __mt76_worker_fn+0x84/0x150 [mt76] Whether a given setup hits it depends on how much headroom the ingress netdev leaves in its rx skbs. Reproduced on a Raspberry Pi 5 bridging onboard ethernet to a Netgear A9000; originally reported on an MT7986 router running OpenWrt. Nick Morrow's testing on a Pi 4 (bcmgenet), which leaves more headroom, helped narrow the trigger to the ingress path. The same bug was fixed on mt7921 by commit 98c4d0abf5c4 ("mt76: mt7921: don't assume adequate headroom for SDIO headers"), but mt7925 was copied from mt7921 without the fix. Add the same guard here.
References
- https://git.kernel.org/stable/c/9a72b180f0575e41471e088e09bddc4b73d6dee2
- https://git.kernel.org/stable/c/22edb6786127271aeba7abd30f152977c605c6a3
- https://git.kernel.org/stable/c/8d481f93588932a95f657671d4e1601b90d130cc
- https://git.kernel.org/stable/c/e5e8fc11a7ac578f16079f855b7fffc1649d053c
- https://git.kernel.org/stable/c/ef3e34874d2332d0f63e72c2c35ce5c93568c125
European references
- ENISA EUVD · EUVD-2026-71275
- GCVE · GCVE-0-2026-80825
CERT-FR advisories
- CERTFR-2026-AVI-1385 — Multiples vulnérabilités dans les produits VMware · cert.ssi.gouv.fr
- CERTFR-2026-AVI-1289 — Multiples vulnérabilités dans le noyau Linux de Debian LTS · cert.ssi.gouv.fr
- CERTFR-2026-AVI-1253 — Multiples vulnérabilités dans le noyau Linux de Debian · cert.ssi.gouv.fr
Affected products
| Product | Versions |
|---|---|
| Linux · Linux | affected c948b5da6bbec742b433138e3e3f9537a85af2e5 < 9a72b180f0575e41471e088e09bddc4b73d6dee2 ; affected c948b5da6bbec742b433138e3e3f9537a85af2e5 < 22edb6786127271aeba7abd30f152977c605c6a3 ; affected c948b5da6bbec742b433138e3e3f9537a85af2e5 < 8d481f93588932a95f657671d4e1601b90d130cc ; affected c948b5da6bbec742b433138e3e3f9537a85af2e5 < e5e8fc11a7ac578f16079f855b7fffc1649d053c ; affected c948b5da6bbec742b433138e3e3f9537a85af2e5 < ef3e34874d2332d0f63e72c2c35ce5c93568c125 |
| Linux · Linux | affected 6.7 ; unaffected 0 < 6.7 ; unaffected 6.12.108 ≤ 6.12.* ; unaffected 6.18.49 ≤ 6.18.* ; unaffected 7.1.13 ≤ 7.1.* ; unaffected 7.2.3 ≤ 7.2.* |
Sources
| Source | Licence |
|---|---|
| CVE List (CVEProject cvelistV5) | CVE Program Terms of Use |
| EPSS (FIRST.org) | FIRST — attribution requested |
| ENISA EUVD | ENISA — reproduction authorised, source acknowledged |
| CERT-FR (ANSSI) | Licence Ouverte / Etalab 2.0 |
| NVD (NIST) via fkie-cad/nvd-json-data-feeds | Public domain — this product uses data from the NVD API but is not endorsed or certified by the NVD |