{"id":"CVE-2026-98601","title":"Bluetooth: btintel_pcie: validate device-supplied DMA indices","summary":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: btintel_pcie: validate device-supplied DMA indices\n\nIn btintel_pcie_msix_rx_handle(), the driver processes RX completion\ndescriptors (urbd1) written by the P…","severity":"none","vendor":"Linux","product":"Linux","affected":["Linux >= c2b636b3f788d10486a6691ad6dd3ec4c93bd78e < f42cd95e679d5b78611cd2208cd1c41ad0045ffa","Linux >= c2b636b3f788d10486a6691ad6dd3ec4c93bd78e < 8ec5838a35b03ac0cf3602452a369898051ffaf9","Linux >= c2b636b3f788d10486a6691ad6dd3ec4c93bd78e < b29b70bfa12133423924fcd0327c19a802f7e368","Linux >= c2b636b3f788d10486a6691ad6dd3ec4c93bd78e < 37a11129345337efd6eef8e62b03b6348cd0dd8b","Linux 6.10"],"published":"2026-10-18","updated":"2026-10-18","sourceUpdated":"2026-10-18T15:19:13.760Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-98601","references":[{"url":"https://git.kernel.org/stable/c/f42cd95e679d5b78611cd2208cd1c41ad0045ffa"},{"url":"https://git.kernel.org/stable/c/8ec5838a35b03ac0cf3602452a369898051ffaf9"},{"url":"https://git.kernel.org/stable/c/b29b70bfa12133423924fcd0327c19a802f7e368"},{"url":"https://git.kernel.org/stable/c/37a11129345337efd6eef8e62b03b6348cd0dd8b"}],"tags":["cve.org"],"ingestedAt":"2026-10-18T15:45:12.249Z","slug":"CVE-2026-98601","body":"## Overview\n\nIn the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: btintel_pcie: validate device-supplied DMA indices\n\nIn btintel_pcie_msix_rx_handle(), the driver processes RX completion\ndescriptors (urbd1) written by the PCIe device into DMA-coherent memory.\nurbd1->frbd_tag (a 16-bit field fully controlled by the device firmware\nvia DMA) is used directly as an array index into rxq->bufs[] without any\nbounds check. rxq->bufs[] has only BTINTEL_PCIE_RX_DESCS_COUNT (64)\nentries, while frbd_tag can be any value 0-65535. A malicious or\nmalfunctioning device can write an out-of-range frbd_tag, causing the\ndriver to dereference an out-of-bounds data_buf pointer.\n\nAdditionally, cr_hia is read from a DMA-shared index array also writable\nby the device; if the device sets cr_hia >= rxq->count, the while-loop\nnever terminates because cr_tia is wrapped via modulo rxq->count and can\nnever equal an out-of-range cr_hia.\n\nAdd bounds validation for cr_hia and frbd_tag in the RX path, and cr_hia\nin the TX path. Log invalid values with bt_dev_err before returning.\n\n## Affected\n\n- `Linux >= c2b636b3f788d10486a6691ad6dd3ec4c93bd78e < f42cd95e679d5b78611cd2208cd1c41ad0045ffa`\n- `Linux >= c2b636b3f788d10486a6691ad6dd3ec4c93bd78e < 8ec5838a35b03ac0cf3602452a369898051ffaf9`\n- `Linux >= c2b636b3f788d10486a6691ad6dd3ec4c93bd78e < b29b70bfa12133423924fcd0327c19a802f7e368`\n- `Linux >= c2b636b3f788d10486a6691ad6dd3ec4c93bd78e < 37a11129345337efd6eef8e62b03b6348cd0dd8b`\n- `Linux 6.10`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"sunlit","depthScore":3,"depthScoreParts":{"impact":2.8,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}