{"id":"CVE-2026-68085","state":"PUBLISHED","title":"Bluetooth: hci_uart: clear HCI_UART_SENDING when write_work is canceled","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_uart: clear HCI_UART_SENDING when write_work is canceled\n\nHCI_UART_SENDING bit in tx_state means write_work is pending and blocks\nqueueing it again.  Currently this bit is not cleared when canceling the\nwork in hci_uart_close(), which blocks future writes when device is\nreopened later if write_work was pending.\n\nFix by clearing HCI_UART_SENDING when canceling the work.\n\nAlso make clearing of tx_skb safe by using disable_work_sync +\nenable_work instead of just cancel_work_sync.  hci_uart_flush() purges\nthe proto tx queue so we can cancel the pending write_work there,\ninstead of doing it just in hci_uart_close().  Re-enable and possibly\nrequeue the work after queue flush.","publishedAt":"2026-08-10T11:51:39.079Z","updatedAt":"2026-10-19T20:48:44.294Z","severity":{"score":8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"81c7a3c22a0f2808cf4ae0b4908f59763b23606d","status":"affected","lessThan":"d52446b3e735cfdbdc2a58342163803bc2e64249","versionType":"git"},{"version":"192cb0f1ca706d9a1bc36ae0ad5f666d1e4fd894","status":"affected","lessThan":"b9dd39cf1667e378b25a082ca796d495d578c5d3","versionType":"git"},{"version":"c1bb9336ae6b54a5f6a353c4bd4ed9a4307e429b","status":"affected","lessThan":"714d861d35d937f23375a4517569b13917bbbe51","versionType":"git"},{"version":"c1bb9336ae6b54a5f6a353c4bd4ed9a4307e429b","status":"affected","lessThan":"1b0d946d6f08bd39211385bc703a440911b41e46","versionType":"git"},{"version":"78aad93e938f013d9272fe0ee168f27883afa95c","status":"affected","versionType":"git"},{"version":"e2d19969c8d9198ecc3090bcd5312ecd503a3339","status":"affected","versionType":"git"},{"version":"c85cff648a2bc92322912db5f1727ad05afae7b6","status":"affected","versionType":"git"},{"version":"9d20d48be2c4a071fb015eb09bda2cecd25daf34","status":"affected","versionType":"git"},{"version":"7338031946bd06f6dff149e67b60c4cd083bfea8","status":"affected","versionType":"git"},{"version":"6.12.92","status":"affected","lessThan":"6.12.96","versionType":"semver"},{"version":"6.18.34","status":"affected","lessThan":"6.18.39","versionType":"semver"},{"version":"5.10.258","status":"affected","lessThan":"5.11","versionType":"semver"},{"version":"5.15.209","status":"affected","lessThan":"5.16","versionType":"semver"},{"version":"6.1.175","status":"affected","lessThan":"6.2","versionType":"semver"},{"version":"6.6.142","status":"affected","lessThan":"6.7","versionType":"semver"},{"version":"7.0.11","status":"affected","lessThan":"7.1","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/bluetooth/hci_ldisc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"7.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"7.1","versionType":"semver"},{"version":"6.12.96","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.39","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.4","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/bluetooth/hci_ldisc.c"]}],"references":["https://git.kernel.org/stable/c/d52446b3e735cfdbdc2a58342163803bc2e64249","https://git.kernel.org/stable/c/b9dd39cf1667e378b25a082ca796d495d578c5d3","https://git.kernel.org/stable/c/714d861d35d937f23375a4517569b13917bbbe51","https://git.kernel.org/stable/c/1b0d946d6f08bd39211385bc703a440911b41e46"],"weaknesses":["CWE-667"],"ingestedAt":"2026-10-29T20:12:49.727Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/68xxx/CVE-2026-68085.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-68085","state":"PUBLISHED","datePublished":"2026-08-10T11:51:39.079Z","dateUpdated":"2026-10-19T20:48:44.294Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-07-30T09:28:09.367Z"},"containers":{"cna":{"title":"Bluetooth: hci_uart: clear HCI_UART_SENDING when write_work is canceled","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_uart: clear HCI_UART_SENDING when write_work is canceled\n\nHCI_UART_SENDING bit in tx_state means write_work is pending and blocks\nqueueing it again.  Currently this bit is not cleared when canceling the\nwork in hci_uart_close(), which blocks future writes when device is\nreopened later if write_work was pending.\n\nFix by clearing HCI_UART_SENDING when canceling the work.\n\nAlso make clearing of tx_skb safe by using disable_work_sync +\nenable_work instead of just cancel_work_sync.  hci_uart_flush() purges\nthe proto tx queue so we can cancel the pending write_work there,\ninstead of doing it just in hci_uart_close().  Re-enable and possibly\nrequeue the work after queue flush."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"81c7a3c22a0f2808cf4ae0b4908f59763b23606d","status":"affected","lessThan":"d52446b3e735cfdbdc2a58342163803bc2e64249","versionType":"git"},{"version":"192cb0f1ca706d9a1bc36ae0ad5f666d1e4fd894","status":"affected","lessThan":"b9dd39cf1667e378b25a082ca796d495d578c5d3","versionType":"git"},{"version":"c1bb9336ae6b54a5f6a353c4bd4ed9a4307e429b","status":"affected","lessThan":"714d861d35d937f23375a4517569b13917bbbe51","versionType":"git"},{"version":"c1bb9336ae6b54a5f6a353c4bd4ed9a4307e429b","status":"affected","lessThan":"1b0d946d6f08bd39211385bc703a440911b41e46","versionType":"git"},{"version":"78aad93e938f013d9272fe0ee168f27883afa95c","status":"affected","versionType":"git"},{"version":"e2d19969c8d9198ecc3090bcd5312ecd503a3339","status":"affected","versionType":"git"},{"version":"c85cff648a2bc92322912db5f1727ad05afae7b6","status":"affected","versionType":"git"},{"version":"9d20d48be2c4a071fb015eb09bda2cecd25daf34","status":"affected","versionType":"git"},{"version":"7338031946bd06f6dff149e67b60c4cd083bfea8","status":"affected","versionType":"git"},{"version":"6.12.92","status":"affected","lessThan":"6.12.96","versionType":"semver"},{"version":"6.18.34","status":"affected","lessThan":"6.18.39","versionType":"semver"},{"version":"5.10.258","status":"affected","lessThan":"5.11","versionType":"semver"},{"version":"5.15.209","status":"affected","lessThan":"5.16","versionType":"semver"},{"version":"6.1.175","status":"affected","lessThan":"6.2","versionType":"semver"},{"version":"6.6.142","status":"affected","lessThan":"6.7","versionType":"semver"},{"version":"7.0.11","status":"affected","lessThan":"7.1","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/bluetooth/hci_ldisc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"7.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"7.1","versionType":"semver"},{"version":"6.12.96","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.39","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.4","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/bluetooth/hci_ldisc.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/d52446b3e735cfdbdc2a58342163803bc2e64249"},{"url":"https://git.kernel.org/stable/c/b9dd39cf1667e378b25a082ca796d495d578c5d3"},{"url":"https://git.kernel.org/stable/c/714d861d35d937f23375a4517569b13917bbbe51"},{"url":"https://git.kernel.org/stable/c/1b0d946d6f08bd39211385bc703a440911b41e46"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:A - The flaw is in the Bluetooth HCI UART TX teardown path; an adjacent Bluetooth peer can drive HCI traffic to keep write_work pending while privileged stack management (HCIDEVRESET/close during adapter recovery) executes hci_uart_close/flush.\nAC:L - An attacker controls both sides of the race by generating HCI TX to set HCI_UART_SENDING and concurrently triggering adapter close/reset (e.g., HCIDEVRESET), making the stuck-bit and tx_skb teardown races reliably reachable.\nPR:L - Direct exploitation requires CAP_NET_ADMIN to attach the N_HCI TTY line discipline and issue HCIDEVDOWN/HCIDEVRESET ioctls; this capability is available to unprivileged users inside user namespaces, not only init-namespace root.\nUI:N - No victim interaction is required beyond normal Bluetooth operation; exploitation is achieved through attacker-driven HCI traffic and adapter close/reset timing without the user opening files or confirming prompts.\nS:U - Impact is confined to kernel Bluetooth/UART state on the host (permanent TX failure or kernel crash); it does not cross a VM, container, or IOMMU security boundary to affect a different authority.\nC:H - The vulnerable hci_uart_flush path can race with protocol timers requeueing write_work, causing tx_skb double-free/UAF heap corruption that can expose kernel memory contents, not merely a functional TX stall.\nI:H - Concurrent flush and write_work on tx_skb enables heap corruption primitives typical of double-free/UAF bugs in the kernel slab allocator, which can be leveraged for arbitrary memory writes and code execution.\nA:H - Leaving HCI_UART_SENDING set after cancel permanently blocks all future Bluetooth transmissions after reopen until full teardown, and the tx_skb corruption race can trigger kernel oops/panic."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-17T04:58:33.786Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.12.92","versionEndExcluding":"6.12.96"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.18.34","versionEndExcluding":"6.18.39"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.1","versionEndExcluding":"7.1.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.1","versionEndExcluding":"7.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10.258"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15.209"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1.175"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6.142"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.0.11"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-68085","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-16T15:43:36.224665Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-667","lang":"en","type":"CWE","description":"CWE-667 Improper Locking"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-19T20:48:44.294Z"}}]}}}