Description
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_ldisc: Clear HCI_UART_PROTO_INIT on error When hci_register_dev() fails in hci_uart_register_dev() HCI_UART_PROTO_INIT is not cleared before calling hu->proto->close(hu) and setting hu->hdev to NULL. This means incoming UART data will reach the protocol-specific recv handler in hci_uart_tty_receive() after resources are freed. Clear HCI_UART_PROTO_INIT with a write lock before calling hu->proto->close() and setting hu->hdev to NULL. The write lock ensures all active readers have completed and no new reader can enter the protocol recv path before resources are freed. This allows the protocol-specific recv functions to remove the "HCI_UART_REGISTERED" guard without risking a null pointer dereference if hci_register_dev() fails.
Affected products
- Linux / Linuxa40f94f7caa8d3421b64f63ac31bc0f24c890f39 – ebb39b2d81731b83ee71a1ba6dd0291a57b5ac07
- Linux / Linux9e5a0f5777162e503400c70c6ed25fbbe2d38799 – ed4033fb85ccaaf6c3983be3c7b037e48253d232
- Linux / Linux80f14e9de6a43a0bd8194cad1003a3e6dcbc3984 – 356dee1bcac4d0d9152390561fa63331ebff211b
- Linux / Linux02e1bcdfdf769974e7e9fa285e295cd9852e2a38 – a673cf6c4ac702cb79ac1f4d7fc4de763a6a3e40
- Linux / Linux281782d2c6730241e300d630bb9f200d831ede71 – f4b69c35813c432973d340d3600c01de106ed474
- Linux / Linux5df5dafc171b90d0b8d51547a82657cd5a1986c7 – 3daa5818e473ed60eb69d8b5c71b651909d28c5a
- Linux / Linux5df5dafc171b90d0b8d51547a82657cd5a1986c7 – 194f029a4d7f739e44ebc1f473120187b4de5104
- Linux / Linux5df5dafc171b90d0b8d51547a82657cd5a1986c7 – 68d39ea5e0adc9ecaea1ce8abd842ec972eb8718
- Linux / Linux1dcf08fcff5ca529de6dc0395091f28854f4e54a – 1dcf08fcff5ca529de6dc0395091f28854f4e54a
- Linux / Linux8e5aff600539e5faea294d9612cca50220e602b8 – 8e5aff600539e5faea294d9612cca50220e602b8
- Linux / Linuxdb7509fa110dd9b11134b75894677f30353b2c51 – db7509fa110dd9b11134b75894677f30353b2c51
- Linux / Linux5.10.237 – 5.10.258
- Linux / Linux5.15.181 – 5.15.209
- Linux / Linux6.1.135 – 6.1.175
- Linux / Linux6.6.88 – 6.6.141
- Linux / Linux6.12.24 – 6.12.91
- Linux / Linux5.4.293 – 5.5
- Linux / Linux6.13.12 – 6.14
- Linux / Linux6.14.3 – 6.15
- Linux / Linux6.15 – 6.15
- Linux / Linux0 – 6.15
- Linux / Linux5.10.258 – 5.10.*
- Linux / Linux5.15.209 – 5.15.*
- Linux / Linux6.1.175 – 6.1.*
- Linux / Linux6.6.141 – 6.6.*
- Linux / Linux6.12.91 – 6.12.*
- Linux / Linux6.18.33 – 6.18.*
- Linux / Linux7.0.10 – 7.0.*
- Linux / Linux7.1 – *
References
- MISChttps://git.kernel.org/stable/c/ebb39b2d81731b83ee71a1ba6dd0291a57b5ac07
- MISChttps://git.kernel.org/stable/c/ed4033fb85ccaaf6c3983be3c7b037e48253d232
- MISChttps://git.kernel.org/stable/c/356dee1bcac4d0d9152390561fa63331ebff211b
- MISChttps://git.kernel.org/stable/c/a673cf6c4ac702cb79ac1f4d7fc4de763a6a3e40
- MISChttps://git.kernel.org/stable/c/f4b69c35813c432973d340d3600c01de106ed474
- MISChttps://git.kernel.org/stable/c/3daa5818e473ed60eb69d8b5c71b651909d28c5a
- MISChttps://git.kernel.org/stable/c/194f029a4d7f739e44ebc1f473120187b4de5104
- MISChttps://git.kernel.org/stable/c/68d39ea5e0adc9ecaea1ce8abd842ec972eb8718