net: usb: kaweth: remove TX queue manipulation in kaweth_set_rx_mode
- 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.10.252, 5.15.202, 6.1.165, 6.6.128, 6.12.75, and 2 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
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: net: usb: kaweth: remove TX queue manipulation in kaweth_set_rx_mode kaweth_set_rx_mode(), the ndo_set_rx_mode callback, calls netif_stop_queue() and netif_wake_queue(). These are TX queue flow control functions unrelated to RX multicast configuration. The premature netif_wake_queue() can re-enable TX while tx_urb is still in-flight, leading to a double usb_submit_urb() on the same URB: kaweth_start_xmit() { netif_stop_queue(); usb_submit_urb(kaweth->tx_urb); } kaweth_set_rx_mode() { netif_stop_queue(); netif_wake_queue(); // wakes TX queue before URB is done } kaweth_start_xmit() { netif_stop_queue(); usb_submit_urb(kaweth->tx_urb); // URB submitted while active } This triggers the WARN in usb_submit_urb(): "URB submitted while active" This is a similar class of bug fixed in rtl8150 by • commit 958baf5eaee3 ("net: usb: Remove disruptive netif_wake_queue in rtl8150_set_multicast"). Also kaweth_set_rx_mode() is already functionally broken, the real set_rx_mode action is performed by kaweth_async_set_rx_mode(), which in turn is not a no-op only at ndo_open() time.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 443a830b1dc4f85c7560da59d4494b629feee215; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 586318c2730433184c6f1d21183e346ddf25e81d; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in a2cd4b4db315a845a5603d08c9d03b11ddfc799d; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in ef9b10a020503888eb6c8ed85a3d901a624ede4c; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 9c79b839a63980c7da7ec5db895198045e154112; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in fc393af769af845d9985e2845e49553d8f015a64; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 8367c0e90126426e60581e4c07e1ec4411a0f843; From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 · fixed in 64868f5ecadeb359a49bc4485bfa7c497047f13a
- Linux Linux
2.6.12
- KernelLinux
From 2.6.12 · fixed in 5.10.252; From 5.11.0 · fixed in 5.15.202; From 5.16.0 · fixed in 6.1.165; From 6.2.0 · fixed in 6.6.128; From 6.7.0 · fixed in 6.12.75; From 6.13.0 · fixed in 6.18.16; From 6.19.0 · fixed in 6.19.6
References 8
git.kernel.org
- stable/c/443a830b1dc4f85c7560da59d4494b629feee215
- stable/c/586318c2730433184c6f1d21183e346ddf25e81d
- stable/c/a2cd4b4db315a845a5603d08c9d03b11ddfc799d
- stable/c/ef9b10a020503888eb6c8ed85a3d901a624ede4c
- stable/c/9c79b839a63980c7da7ec5db895198045e154112
- stable/c/fc393af769af845d9985e2845e49553d8f015a64
- stable/c/8367c0e90126426e60581e4c07e1ec4411a0f843
- stable/c/64868f5ecadeb359a49bc4485bfa7c497047f13a