Skip to main content

Linux Kernel i2c-i801 CVE-2026-64205

| EUVDEUVD-2026-46013 MEDIUM
2026-07-20 Linux GHSA-cfcm-pxwx-hg62
5.5
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
4.7 MEDIUM

AC:H reflects the required timing race with concurrent BIOS/ACPI SMBus activity; all other metrics align with the provided vector.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:H/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
4.1 MEDIUM
AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H
Red Hat
5.5 MEDIUM
qualitative

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

5
Analysis Generated
Aug 11, 2026 - 22:54 vuln.today
CVSS changed
Aug 11, 2026 - 18:52 NVD
5.5 (MEDIUM)
Patch available
Jul 20, 2026 - 18:18 EUVD
CVE Published
Jul 20, 2026 - 16:27 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 20, 2026 - 16:27 nvd
MEDIUM 5.5

DescriptionNVD

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

i2c: i801: fix hardware state machine corruption in error path

A severe livelock and subsequent Hung Task panic were observed in the i2c-i801 driver during concurrent Fuzzing. The crash is caused by an unconditional hardware register cleanup in the error handling path of i801_access().

When i801_check_pre() fails (e.g., returning -EBUSY because the SMBus controller is actively used by BIOS/ACPI), the kernel does not actually acquire the hardware ownership. However, the code jumps to the 'out' label and executes:

iowrite8(SMBHSTSTS_INUSE_STS | STATUS_FLAGS, SMBHSTSTS(priv));

This forcefully clears the INUSE_STS lock and resets the hardware status flags without owning the controller. Doing so interrupts ongoing BIOS/ACPI transactions and totally corrupts the SMBus hardware state machine.

Consequently, all subsequent i801_access() calls fail at the pre-check stage, triggering an endless stream of "SMBus is busy, can't use it!" error logs. Over a slow serial console, this printk flood monopolizes the CPU (Console Livelock), starving other processes trying to acquire the mmap_lock down_read semaphore, ultimately triggering the hung task watchdog.

Fix this by moving the 'out' label below the hardware register cleanup. If i801_check_pre() fails, we safely bypass the iowrite8() and only release the software locks (pm_runtime and mutex), strictly adhering to the rule of not releasing resources that were never acquired.

AnalysisAI

Incorrect error-path logic in the Linux kernel's i2c-i801 SMBus driver allows a local, low-privileged user to trigger a hardware state machine corruption leading to a system-wide hung task panic. When i801_check_pre() returns -EBUSY because the BIOS/ACPI firmware legitimately holds the SMBus controller, the driver unconditionally writes to SMBHSTSTS hardware registers without owning the controller, destroying the firmware's in-progress transaction and permanently corrupting the SMBus state machine. This produces an infinite 'SMBus is busy' error log flood, causes a console livelock that starves processes competing for mmap_lock, and ultimately triggers the hung task watchdog. No public exploit is identified at time of analysis; EPSS is 0.17% (6th percentile) and the vulnerability is not in CISA KEV.

Technical ContextAI

The i2c-i801 driver manages the Intel SMBus Host Controller integrated into Intel chipsets, identified by CPE cpe:2.3:a:linux:linux. SMBus (System Management Bus, a subset of I2C) is used for low-level hardware management: thermal sensors, voltage regulators, EEPROMs, and power management units. Access to the controller is arbitrated via the INUSE_STS bit in the SMBHSTSTS hardware register, which acts as a hardware semaphore between the OS kernel and BIOS/ACPI firmware paths. The root cause is a resource-release-without-ownership error: i801_access() unconditionally executes iowrite8(SMBHSTSTS_INUSE_STS | STATUS_FLAGS, SMBHSTSTS(priv)) in its 'out' error-handling label regardless of whether i801_check_pre() succeeded. When i801_check_pre() fails with -EBUSY, the kernel never acquired the hardware semaphore, yet the cleanup code clears it anyway - interrupting the BIOS/ACPI transaction and leaving the state machine in an unrecoverable state. CWE is not assigned by NVD, but the class is best described as improper release of a resource that was never acquired, analogous to CWE-404 or CWE-672.

RemediationAI

Upgrade to a patched Linux kernel version: 6.18.39, 7.1.4, or 7.2-rc1, which fix the issue by moving the 'out' label in i801_access() to a position below the hardware register cleanup, ensuring iowrite8() is only reached when the controller was successfully acquired. Stable-branch patches are available at https://git.kernel.org/stable/c/bb5133a7d5f3fe5c387770e25f2e00e682ce11ed, https://git.kernel.org/stable/c/00904687b9c5527d569d9a1ca72119823e735a61, and https://git.kernel.org/stable/c/10dd1a736d557e310a77117832874729a0175d57. Where immediate patching is not feasible, unloading or blacklisting the i2c-i801 kernel module (modprobe -r i2c-i801 and adding 'blacklist i2c-i801' to /etc/modprobe.d/) eliminates the attack surface entirely but disables hardware sensor monitoring (lm-sensors, hwmon), SMBus-attached EEPROM access, and any hardware management dependent on the Intel SMBus; assess operational impact before applying, particularly on servers relying on out-of-band thermal or voltage monitoring via SMBus. Restricting untrusted local user access to i2c device nodes (/dev/i2c-*) via udev rules or filesystem permissions provides a partial mitigation but does not address all kernel-internal SMBus callers.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected

Share

CVE-2026-64205 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy