Description
In the Linux kernel, the following vulnerability has been resolved:

Bluetooth: btmtksdio: fix infinite loop in btmtksdio_txrx_work()

Every once in a while we see a hung btmtksdio_flush() task:

INFO: task kworker/u17:0:189 blocked for more than 122 seconds.
__cancel_work_timer+0x3f4/0x460
cancel_work_sync+0x1c/0x2c
btmtksdio_flush+0x2c/0x40
hci_dev_open_sync+0x10c4/0x2190
[..]

It all boils down to incorrect time_is_before_jiffies() usage in
btmtksdio_txrx_work(). The btmtksdio_txrx_work() loop is expected
to be terminated if running for longer than 5*HZ. However the
timeout check is twisted: time_is_before_jiffies(old_jiffies + 5*HZ)
evaluates to true when old_jiffies + 5*HZ is in the past i.e. when a
timeout has occurred. Using OR with time_is_before_jiffies(txrx_timeout)
means that:
- before the 5-second timeout: the condition is `int_status || false`,
so it loops as long as there are pending interrupts.
- after the 5-second timeout: the condition becomes `int_status || true`,
which is always true.

When the loop becomes infinite btmtksdio_txrx_work() loop never
terminates and never releases the SDIO host.

Fix loop termination condition to actually enforce a 5*HZ timeout.
Published: 2026-07-25
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A logic error in the Linux kernel’s btmtksdio Bluetooth SDIO driver creates an infinite loop in btmtksdio_txrx_work(). After five seconds the timeout check always evaluates to true, so the loop never exits and the btmtksdio_flush task blocks indefinitely. The blocked task can prevent the SDIO host from releasing, effectively disabling the Bluetooth SDIO interface and can lead to a system hang through a local denial‑of‑service condition.

Affected Systems

All Linux kernel builds that ship the btmtksdio driver before the recent patch are affected. This includes the official upstream kernel and any vendor derivatives that have not yet applied the loop‑termination fix. The vulnerability is present in any kernel version containing the original btmtksdio_txrx_work implementation.

Risk and Exploitability

The CVSS score of 5.5 indicates a moderate severity, while the EPSS score of <1% shows a very low likelihood of exploitation and the vulnerability is not listed in CISA KEV. Based on the description, a local interaction with the Bluetooth SDIO interface could potentially trigger the faulty state, but the exact access requirement is not explicitly stated. The risk remains high if exploitation occurs, as the infinite loop could cause a kernel block and potentially a system hang.

Generated by OpenCVE AI on August 5, 2026 at 00:27 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply a kernel version that contains the btmtksdio_txrx_work loop timeout fix.
  • If an immediate kernel upgrade is not possible, disable or block the Bluetooth SDIO device to prevent the hung task from occurring.
  • Reboot the system after applying the kernel update or blocking the device to ensure changes take effect.

Generated by OpenCVE AI on August 5, 2026 at 00:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4720-1 linux security update
Debian DLA Debian DLA DLA-4723-1 linux-6.1 security update
Debian DLA Debian DLA DLA-4724-1 linux-6.12 new package
History

Mon, 03 Aug 2026 19:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-400
CWE-703

Wed, 29 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-835
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Mon, 27 Jul 2026 05:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-400
CWE-703

Sat, 25 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: Bluetooth: btmtksdio: fix infinite loop in btmtksdio_txrx_work() Every once in a while we see a hung btmtksdio_flush() task: INFO: task kworker/u17:0:189 blocked for more than 122 seconds. __cancel_work_timer+0x3f4/0x460 cancel_work_sync+0x1c/0x2c btmtksdio_flush+0x2c/0x40 hci_dev_open_sync+0x10c4/0x2190 [..] It all boils down to incorrect time_is_before_jiffies() usage in btmtksdio_txrx_work(). The btmtksdio_txrx_work() loop is expected to be terminated if running for longer than 5*HZ. However the timeout check is twisted: time_is_before_jiffies(old_jiffies + 5*HZ) evaluates to true when old_jiffies + 5*HZ is in the past i.e. when a timeout has occurred. Using OR with time_is_before_jiffies(txrx_timeout) means that: - before the 5-second timeout: the condition is `int_status || false`, so it loops as long as there are pending interrupts. - after the 5-second timeout: the condition becomes `int_status || true`, which is always true. When the loop becomes infinite btmtksdio_txrx_work() loop never terminates and never releases the SDIO host. Fix loop termination condition to actually enforce a 5*HZ timeout.
Title Bluetooth: btmtksdio: fix infinite loop in btmtksdio_txrx_work()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-07-25T08:50:50.604Z

Reserved: 2026-07-19T15:36:31.786Z

Link: CVE-2026-64409

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-07-25T10:17:24.633

Modified: 2026-08-11T15:01:50.637

Link: CVE-2026-64409

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-07-25T00:00:00Z

Links: CVE-2026-64409 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-05T00:30:05Z

Weaknesses
  • CWE-835

    Loop with Unreachable Exit Condition ('Infinite Loop')