Bluetooth: hci_uart: clear HCI_UART_SENDING when write_work is canceled
- 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 6.12.96, 6.18.39, 5.11, 5.16, 6.2, and 3 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: Bluetooth: hci_uart: clear HCI_UART_SENDING when write_work is canceled HCI_UART_SENDING bit in tx_state means write_work is pending and blocks queueing it again. Currently this bit is not cleared when canceling the work in hci_uart_close(), which blocks future writes when device is reopened later if write_work was pending. Fix by clearing HCI_UART_SENDING when canceling the work. Also make clearing of tx_skb safe by using disable_work_sync + enable_work instead of just cancel_work_sync. hci_uart_flush() purges the proto tx queue so we can cancel the pending write_work there, instead of doing it just in hci_uart_close(). Re-enable and possibly requeue the work after queue flush.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 81c7a3c22a0f2808cf4ae0b4908f59763b23606d · fixed in d52446b3e735cfdbdc2a58342163803bc2e64249; From 192cb0f1ca706d9a1bc36ae0ad5f666d1e4fd894 · fixed in b9dd39cf1667e378b25a082ca796d495d578c5d3; From c1bb9336ae6b54a5f6a353c4bd4ed9a4307e429b · fixed in 714d861d35d937f23375a4517569b13917bbbe51; From c1bb9336ae6b54a5f6a353c4bd4ed9a4307e429b · fixed in 1b0d946d6f08bd39211385bc703a440911b41e46; From 6.12.92 · fixed in 6.12.96; From 6.18.34 · fixed in 6.18.39; From 5.10.258 · fixed in 5.11; From 5.15.209 · fixed in 5.16; From 6.1.175 · fixed in 6.2; From 6.6.142 · fixed in 6.7; From 7.0.11 · fixed in 7.1
- Linux Linux
7.1
- KernelLinux
fixed in 6.12.96; From 6.13.0 · fixed in 6.18.39; From 6.19.0 · fixed in 7.1.4