In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: hciconn: Fix null ptr deref in hciabort_conn()
hciabortconn() read hciskbevent(hdev->sentcmd) when a connection was pending, but hdev->sentcmd can be NULL while reqstatus is still HCIREQPEND, leading to a NULL pointer dereference and a general protection fault from the hcirx_work() receive path.
Instead of inspecting hdev->sentcmd, track the in-flight create connection command with a new per-connection HCICONNCREATE flag and route all cancellation through hcicancelconnectsync(), which dispatches to a dedicated per-type cancel function. The create command is in exactly one of two states: still queued, or in flight. The cancel function holds cmdsyncworklock across the whole decision: the worker takes this lock to dequeue every entry, so while it is held a queued command cannot start running and an in-flight command cannot complete and let the next command become pending. This keeps the flag test and hcicmdsynccancel() atomic with respect to the worker, so a queued command is simply dequeued, and an in-flight command owned by this connection is cancelled without the risk of cancelling an unrelated command that became pending in the meantime. CIS uses the same flag mechanism via HCICONNCREATE_CIS but cannot be dequeued per-connection.
hciaclcreateconnsync() and hcilecreateconnsync() clear HCICONNCREATE after the create command completes, but the command status handler can free conn via hciconndel() (for example when the controller rejects the connection) while the worker is still blocked on the connection complete event. Hold a reference on conn across the create command so the flag can be cleared without a use-after-free.
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64405.json",
"cna_assigner": "Linux"
}