{"id":67748,"date":"2025-08-09T19:31:50","date_gmt":"2025-08-09T16:01:50","guid":{"rendered":"https:\/\/afaghhosting.net\/blog\/cve-2024-58238-bluetooth-btnxpuart-uart-break-timing-vulnerability\/"},"modified":"2025-08-09T19:31:50","modified_gmt":"2025-08-09T16:01:50","slug":"cve-2024-58238-bluetooth-btnxpuart-uart-break-timing-vulnerability","status":"publish","type":"post","link":"https:\/\/afaghhosting.net\/blog\/cve-2024-58238-bluetooth-btnxpuart-uart-break-timing-vulnerability\/","title":{"rendered":"CVE-2024-58238 &#8211; &#8220;Bluetooth btnxpuart UART Break Timing Vulnerability&#8221;"},"content":{"rendered":"<p><strong>CVE ID : <\/strong>CVE-2024-58238<br \/>\n<br \/>\n<strong>Published : <\/strong> Aug. 9, 2025, 3:15 p.m. | 18\u00a0minutes ago<br \/>\n<br \/>\n<strong>Description : <\/strong>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: btnxpuart: Resolve TX timeout error in power save stress test<\/p>\n<p>This fixes the tx timeout issue seen while running a stress test on<br \/>\nbtnxpuart for couple of hours, such that the interval between two HCI<br \/>\ncommands coincide with the power save timeout value of 2 seconds.<\/p>\n<p>Test procedure using bash script:<\/p>\n<p>hciconfig hci0 up<br \/>\n\/\/Enable Power Save feature<br \/>\nhcitool -i hci0 cmd 3f 23 02 00 00<br \/>\nwhile (true)<br \/>\ndo<br \/>\n    hciconfig hci0 leadv<br \/>\n    sleep 2<br \/>\n    hciconfig hci0 noleadv<br \/>\n    sleep 2<br \/>\ndone<\/p>\n<p>Error log, after adding few more debug prints:<br \/>\nBluetooth: btnxpuart_queue_skb(): 01 0A 20 01 00<br \/>\nBluetooth: hci0: Set UART break: on, status=0<br \/>\nBluetooth: hci0: btnxpuart_tx_wakeup() tx_work scheduled<br \/>\nBluetooth: hci0: btnxpuart_tx_work() dequeue: 01 0A 20 01 00<br \/>\nCan&#8217;t set advertise mode on hci0: Connection timed out (110)<br \/>\nBluetooth: hci0: command 0x200a tx timeout<\/p>\n<p>When the power save mechanism turns on UART break, and btnxpuart_tx_work()<br \/>\nis scheduled simultaneously, psdata-&gt;ps_state is read as PS_STATE_AWAKE,<br \/>\nwhich prevents the psdata-&gt;work from being scheduled, which is responsible<br \/>\nto turn OFF UART break.<\/p>\n<p>This issue is fixed by adding a ps_lock mutex around UART break on\/off as<br \/>\nwell as around ps_state read\/write.<br \/>\nbtnxpuart_tx_wakeup() will now read updated ps_state value. If ps_state is<br \/>\nPS_STATE_SLEEP, it will first schedule psdata-&gt;work, and then it will<br \/>\nreschedule itself once UART break has been turned off and ps_state is<br \/>\nPS_STATE_AWAKE.<\/p>\n<p>Tested above script for 50,000 iterations and TX timeout error was not<br \/>\nobserved anymore.<br \/>\n<br \/>\n<strong>Severity:<\/strong> 0.0 | NA<br \/>\n<br \/>\nVisit the link for more details, such as CVSS details, affected products, timeline, and more&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CVE ID : CVE-2024-58238 Published : Aug. 9, 2025, 3:15 p.m. | 18\u00a0minutes ago Description : In the Linux kernel, the following vulnerability has been resolved: Bluetooth: btnxpuart: Resolve TX timeout error in power save stress test This fixes the tx timeout issue seen while running a stress test on btnxpuart for couple of hours, &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-67748","post","type-post","status-publish","format-standard","hentry","category-vulnerability"],"_links":{"self":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/67748","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/comments?post=67748"}],"version-history":[{"count":0,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/67748\/revisions"}],"wp:attachment":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/media?parent=67748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/categories?post=67748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/tags?post=67748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}