{"id":28473,"date":"2026-09-25T00:31:31","date_gmt":"2026-09-24T16:31:31","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93209"},"modified":"2026-09-25T00:31:31","modified_gmt":"2026-09-24T16:31:31","slug":"cve-2026-93209","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93209","title":{"rendered":"CVE-2026-93209 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_core:"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: hci_core: use skb_get() instead of skb_clone() for req_skb<\/p>\n<p>BT enable fails intermittently with -ETIMEDOUT (-110).  The kernel log<br \/>\nshows the HCI Read Local Version command was sent and the firmware<br \/>\nreplied with status 0x00 (logged by hci_req_cmd_complete() BT_DBG),<br \/>\nbut the waiter in __hci_cmd_sync_sk() never woke up and timed out<br \/>\nafter 10 s:<\/p>\n<p>  bluetooth hci0: Opcode 0xfc00              \/\/ __hci_cmd_sync_sk<br \/>\n  bluetooth hci0: opcode 0xfc00 plen 1       \/\/ hci_cmd_sync_add<br \/>\n  bluetooth hci0: skb len 4                  \/\/ hci_cmd_sync_alloc<br \/>\n  bluetooth hci0: length 1                   \/\/ hci_req_sync_run<br \/>\n  Bluetooth: hci0 cmd_cnt 1 cmd queued 1     \/\/ hci_cmd_work<br \/>\n  Bluetooth: hci0 type 1 len 4               \/\/ hci_send_frame<br \/>\n  Bluetooth: opcode 0xfc00 status 0x00       \/\/ hci_req_cmd_complete<\/p>\n<p>  bluetooth hci0: end: err -110              \/\/ __hci_cmd_sync_sk<\/p>\n<p>The root cause is that hci_send_cmd_sync() clones the sent command<br \/>\ninto hdev-&gt;req_skb so that hci_req_cmd_complete() can locate the<br \/>\nregistered completion callback.  Under memory pressure this<br \/>\nskb_clone() fails, leaving hdev-&gt;req_skb NULL.  The firmware reply<br \/>\nis received and processed, but hci_req_cmd_complete() finds NULL<br \/>\nreq_skb, so hci_cmd_sync_complete() is never called, req_status<br \/>\nstays HCI_REQ_PEND, and the waiter times out with -ETIMEDOUT.<\/p>\n<p>req_skb is only used to read bt_cb(skb)-&gt;hci callbacks and opcode &#8212;<br \/>\nit is never modified.  Replace skb_clone() with skb_get(), which<br \/>\nsimply increments the reference count of hdev-&gt;sent_cmd without<br \/>\nallocating new memory and therefore cannot fail.<\/p>\n<p>This issue was first observed as a use-after-free in ttyport_close()<br \/>\nwhen ttyport_open() failed, which was investigated in an earlier<br \/>\npatch series [1].  That investigation led to the discovery of the<br \/>\ntrue root cause described above.<\/p>\n<p>[1] https:\/\/lore.kernel.org\/all\/20250430111617.1151390-1-quic_cxin@quicinc.com\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: hci_core: use skb_get() instead of skb_clone() for req_skb<\/p>\n<p>BT enable fails intermittently with -ETIMEDOUT (-110).  The <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-28473","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/28473","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}