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

i2c: jz4780: Cache host clock rate at probe to prevent CCF prepare_lock deadlock

Fix a severe AB/BA deadlock between the Common Clock Framework (CCF)
and the I2C adapter lock, which triggers when an I2C-controlled clock
generator client (like the Si5351) is registered or modified under the CCF.

During an i2c client clock (generator) frequency change, the CCF acquires its global
'prepare_lock' mutex and the driver calls i2c_transfer() to update the client's
chip registers, stalling for the adapter's I2C bus lock.

Concurrently, an independent, parallel transfer on the same bus (e.g., a GPIO
expander handling LEDs) can hold the I2C adapter lock. Inside this parallel
transfer path, jz4780_i2c_set_speed() calls clk_get_rate() on the host
controller's input clock to calculate bus timings. This call attempts to acquire
the blocked CCF 'prepare_lock', creating a circular dependency that freezes
the system.

The jz4780 host controller clock itself is static and never changes at runtime.

However, calling clk_get_rate() inside the active transfer path introduces
an unnecessary dependency on the CCF internal locks.

Eliminate this synchronous clk_get_rate() call from the active transfer
path by caching the static host peripheral clock rate once - inside the private
jz4780_i2c structure during jz4780_i2c_probe(). Update jz4780_i2c_set_speed()
to use this cached value, safely decoupling active I2C transactions from the
CCF internal locks without any risk of stale timings.

Assisted-by web based Google AI (pinpointing the bug and writing the message).
Published: 2026-08-15
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises when the jz4780 I²C controller driver calls clk_get_rate() during an active I²C transfer, forcing the Common Clock Framework to acquire its global prepare_lock mutex while the driver holds the I²C bus lock. A second transfer on the same bus can also trigger clk_get_rate(), attempting to obtain the already held prepare_lock and creating a circular dependency that deadlocks the system. The result is a denial of service, as the kernel freezes and cannot process further requests. The weakness is a race/locking flaw (CWE‑833).

Affected Systems

This flaw affects Linux kernel builds that include the jz4780 I²C host controller driver, a component found in many Allwinner SoCs and other embedded platforms. The specific kernel versions are not listed in the advisory, but the fix appears in recent kernel sources cited in the references.

Risk and Exploitability

The EPSS score of <1% indicates a very low exploitation probability, and the vulnerability is not listed in the CISA KEV catalog. The CVSS score of 5.5 reflects moderate severity. A likely attack vector involves an attacker who can influence I²C transactions on the bus, such as by controlling an attached clock generator or GPIO expander. This typically requires local presence or a device that can directly affect the I²C bus, so the threat is most acute for systems with exposed or user‑controlled I²C devices. The low EPSS score suggests exploitation is unlikely, but the potential impact is significant.

Generated by OpenCVE AI on August 22, 2026 at 05:12 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the kernel to a version that includes the jz4780 driver fix in the referenced commits.
  • If a custom or older kernel is in use, backport the patch from the cited Git references to the jz4780 I²C driver source.
  • Temporarily remove or disable any I²C clients that trigger clock frequency changes, such as Si5351 clocks or GPIO expanders, to mitigate the deadlock risk until a patch is applied.

Generated by OpenCVE AI on August 22, 2026 at 05:12 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DSA Debian DSA DSA-6466-1 linux security update
History

Sat, 22 Aug 2026 03:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-868

Sat, 22 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-833
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


Wed, 19 Aug 2026 16:45:00 +0000


Sat, 15 Aug 2026 16:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-868

Sat, 15 Aug 2026 12:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: i2c: jz4780: Cache host clock rate at probe to prevent CCF prepare_lock deadlock Fix a severe AB/BA deadlock between the Common Clock Framework (CCF) and the I2C adapter lock, which triggers when an I2C-controlled clock generator client (like the Si5351) is registered or modified under the CCF. During an i2c client clock (generator) frequency change, the CCF acquires its global 'prepare_lock' mutex and the driver calls i2c_transfer() to update the client's chip registers, stalling for the adapter's I2C bus lock. Concurrently, an independent, parallel transfer on the same bus (e.g., a GPIO expander handling LEDs) can hold the I2C adapter lock. Inside this parallel transfer path, jz4780_i2c_set_speed() calls clk_get_rate() on the host controller's input clock to calculate bus timings. This call attempts to acquire the blocked CCF 'prepare_lock', creating a circular dependency that freezes the system. The jz4780 host controller clock itself is static and never changes at runtime. However, calling clk_get_rate() inside the active transfer path introduces an unnecessary dependency on the CCF internal locks. Eliminate this synchronous clk_get_rate() call from the active transfer path by caching the static host peripheral clock rate once - inside the private jz4780_i2c structure during jz4780_i2c_probe(). Update jz4780_i2c_set_speed() to use this cached value, safely decoupling active I2C transactions from the CCF internal locks without any risk of stale timings. Assisted-by web based Google AI (pinpointing the bug and writing the message).
Title i2c: jz4780: Cache host clock rate at probe to prevent CCF prepare_lock deadlock
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-08-19T16:37:02.602Z

Reserved: 2026-08-15T05:44:03.901Z

Link: CVE-2026-74463

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T13:17:50.963

Modified: 2026-08-19T17:21:03.237

Link: CVE-2026-74463

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-08-15T00:00:00Z

Links: CVE-2026-74463 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-22T05:15:03Z

Weaknesses