Description
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_uart: fix null-ptr-deref in hci_uart_write_work hci_uart_set_proto() sets HCI_UART_PROTO_INIT before calling hci_uart_register_dev(), which calls proto->open() to initialize hu->priv. However, if a TTY write wakeup occurs during this window, hci_uart_tx_wakeup() may schedule write_work before hu->priv is initialized, leading to a NULL pointer dereference in hci_uart_write_work() when proto->dequeue() accesses hu->priv. The race condition is: CPU0 CPU1 ---- ---- hci_uart_set_proto() set_bit(HCI_UART_PROTO_INIT) hci_uart_register_dev() tty write wakeup hci_uart_tty_wakeup() hci_uart_tx_wakeup() schedule_work(&hu->write_work) proto->open(hu) // initializes hu->priv hci_uart_write_work() hci_uart_dequeue() proto->dequeue(hu) // accesses hu->priv (NULL!) Fix this by moving set_bit(HCI_UART_PROTO_INIT) after proto->open() succeeds, ensuring hu->priv is initialized before any work can be scheduled.
Product status
a40f94f7caa8d3421b64f63ac31bc0f24c890f39 (git) before b0a900939e7e4866d9b90e9112514b72c451e873
9e5a0f5777162e503400c70c6ed25fbbe2d38799 (git) before ccc683f597ceb28deb966427ae948e5ac739a909
80f14e9de6a43a0bd8194cad1003a3e6dcbc3984 (git) before 937a573423ce5a96fdb1fd425dc6b8d8d4ab5779
02e1bcdfdf769974e7e9fa285e295cd9852e2a38 (git) before 186d147cf7689ba1f9b3ddb753ab634a84940cc9
281782d2c6730241e300d630bb9f200d831ede71 (git) before 53e54cb31e667fca05b1808b990eac0807d1dab0
5df5dafc171b90d0b8d51547a82657cd5a1986c7 (git) before 03e8c90c62233382042b7bd0fa8b8900552fdb62
5df5dafc171b90d0b8d51547a82657cd5a1986c7 (git) before 0c3cd7a0b862c37acbee6d9502107146cc944398
1dcf08fcff5ca529de6dc0395091f28854f4e54a (git)
8e5aff600539e5faea294d9612cca50220e602b8 (git)
db7509fa110dd9b11134b75894677f30353b2c51 (git)
6.15
Any version before 6.15
5.10.249 (semver)
5.15.199 (semver)
6.1.162 (semver)
6.6.123 (semver)
6.12.69 (semver)
6.18.9 (semver)
6.19 (original_commit_for_fix)
References
git.kernel.org/...c/b0a900939e7e4866d9b90e9112514b72c451e873
git.kernel.org/...c/ccc683f597ceb28deb966427ae948e5ac739a909
git.kernel.org/...c/937a573423ce5a96fdb1fd425dc6b8d8d4ab5779
git.kernel.org/...c/186d147cf7689ba1f9b3ddb753ab634a84940cc9
git.kernel.org/...c/53e54cb31e667fca05b1808b990eac0807d1dab0
git.kernel.org/...c/03e8c90c62233382042b7bd0fa8b8900552fdb62
git.kernel.org/...c/0c3cd7a0b862c37acbee6d9502107146cc944398