{
  "affected": [
    {
      "ranges": [
        {
          "events": [
            {
              "introduced": "9cebe4680bb9a72f80c6541eb24af06db7a1fbc9"
            },
            {
              "fixed": "ab0678a0701ac4de499428dc1b321659bb74d272"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        },
        {
          "events": [
            {
              "introduced": "47330cc875b36a1cf7b3543cb2cf90a7c603ce0e"
            },
            {
              "fixed": "e220c1242a643d97102a79f09b7ef3aa31276961"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        },
        {
          "events": [
            {
              "introduced": "525daaea459fc215f432de1b8debbd9144bf97b0"
            },
            {
              "fixed": "cbb325bc150e8c0dbce004ac0e5516bcffc0de31"
            },
            {
              "fixed": "6610c6fe4b8936c232048e6049bf77c70a6f759c"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        },
        {
          "events": [
            {
              "introduced": "6.12.93"
            },
            {
              "fixed": "6.12.112"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        },
        {
          "events": [
            {
              "introduced": "6.18.35"
            },
            {
              "fixed": "6.18.54"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        },
        {
          "events": [
            {
              "introduced": "7.0.12"
            },
            {
              "fixed": "7.1"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        },
        {
          "events": [
            {
              "introduced": "60bceb9a4c693e68cc90ba4b2dfb9e000e8638ff"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "Linux",
        "name": "Kernel"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.12.112"
            }
          ],
          "type": "ECOSYSTEM"
        },
        {
          "events": [
            {
              "introduced": "6.13.0"
            },
            {
              "fixed": "6.18.54"
            }
          ],
          "type": "ECOSYSTEM"
        },
        {
          "events": [
            {
              "introduced": "6.19.0"
            },
            {
              "fixed": "7.2.8"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "database_specific": {
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/98xxx/CVE-2026-98297.json"
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_core: Fix queuing tx_work after workqueue is drained\n\nhci_send_acl(), hci_send_sco() and hci_send_iso() queue hdev-\u003etx_work\nunconditionally. They can run from the L2CAP/SCO/ISO socket send path\nwhile hci_dev_close_sync() is draining hdev-\u003eworkqueue (HCIDEVDOWN\nracing with a socket write). Since that queue_work() is not chained\nwork from the tx_work worker itself, __queue_work() sees the queue\nmarked __WQ_DRAINING, warns \"cannot queue %ps on wq %s\", and drops\nthe work:\n\n  WARNING: CPU: 1 PID: 5985 at kernel/workqueue.c:2352 __queue_work\n  Call Trace:\n   queue_work_on\n   l2cap_chan_send\n   l2cap_sock_sendmsg\n   ...\n\nhci_dev_close_sync() already sets HCI_CMD_DRAIN_WORKQUEUE before\ndraining, but only hci_cmd_work() and handle_cmd_cnt_and_timer()\ncheck it before queuing. Route the tx_work producers through the\nsame guard via a shared hci_sched_tx() helper.",
  "id": "CVE-2026-98297",
  "modified": "2026-10-08T02:30:46.699365672Z",
  "published": "2026-10-06T08:45:55.723Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/6610c6fe4b8936c232048e6049bf77c70a6f759c"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/ab0678a0701ac4de499428dc1b321659bb74d272"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/cbb325bc150e8c0dbce004ac0e5516bcffc0de31"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/e220c1242a643d97102a79f09b7ef3aa31276961"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/98xxx/CVE-2026-98297.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98297"
    },
    {
      "type": "PACKAGE",
      "url": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
    }
  ],
  "schema_version": "1.9.0",
  "summary": "Bluetooth: hci_core: Fix queuing tx_work after workqueue is drained"
}