CVE-2024-58238
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
09/08/2025
Last modified:
11/08/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
Bluetooth: btnxpuart: Resolve TX timeout error in power save stress test<br />
<br />
This fixes the tx timeout issue seen while running a stress test on<br />
btnxpuart for couple of hours, such that the interval between two HCI<br />
commands coincide with the power save timeout value of 2 seconds.<br />
<br />
Test procedure using bash script:<br />
<br />
hciconfig hci0 up<br />
//Enable Power Save feature<br />
hcitool -i hci0 cmd 3f 23 02 00 00<br />
while (true)<br />
do<br />
hciconfig hci0 leadv<br />
sleep 2<br />
hciconfig hci0 noleadv<br />
sleep 2<br />
done<br />
<br />
Error log, after adding few more debug prints:<br />
Bluetooth: btnxpuart_queue_skb(): 01 0A 20 01 00<br />
Bluetooth: hci0: Set UART break: on, status=0<br />
Bluetooth: hci0: btnxpuart_tx_wakeup() tx_work scheduled<br />
Bluetooth: hci0: btnxpuart_tx_work() dequeue: 01 0A 20 01 00<br />
Can&#39;t set advertise mode on hci0: Connection timed out (110)<br />
Bluetooth: hci0: command 0x200a tx timeout<br />
<br />
When the power save mechanism turns on UART break, and btnxpuart_tx_work()<br />
is scheduled simultaneously, psdata->ps_state is read as PS_STATE_AWAKE,<br />
which prevents the psdata->work from being scheduled, which is responsible<br />
to turn OFF UART break.<br />
<br />
This issue is fixed by adding a ps_lock mutex around UART break on/off as<br />
well as around ps_state read/write.<br />
btnxpuart_tx_wakeup() will now read updated ps_state value. If ps_state is<br />
PS_STATE_SLEEP, it will first schedule psdata->work, and then it will<br />
reschedule itself once UART break has been turned off and ps_state is<br />
PS_STATE_AWAKE.<br />
<br />
Tested above script for 50,000 iterations and TX timeout error was not<br />
observed anymore.



