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

i2c: imx: Fix slave registration race and error handling

In i2c_imx_reg_slave(), the slave pointer was assigned before
pm_runtime_resume_and_get(). If pm_runtime_resume_and_get() failed,
the error path returned without clearing i2c_imx->slave, leaving it
non-NULL and causing all subsequent registration attempts to fail
with -EBUSY.

Additionally, because this driver uses a shared IRQ, the interrupt
handler i2c_imx_isr() can execute concurrently and, after acquiring
slave_lock, dereference i2c_imx->slave. The previous fix attempt
added a lockless i2c_imx->slave = NULL on the error path, but that
could race with the ISR under the lock and still cause a NULL pointer
dereference.

Fix both issues by deferring the assignment of i2c_imx->slave and
i2c_imx->last_slave_event to after a successful resume, and by
performing the assignment inside the slave_lock critical section.
This guarantees that the slave pointer is never left stale on the
error path and is always valid when observed by the interrupt handler.
Published: 2026-08-28
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Linux kernel’s i2c_imx driver contains a race condition and a null pointer dereference that can lead to a denial of service. During slave registration, the driver assigns the slave pointer before successfully resuming power management. If the resume fails, the slave pointer is left non‑NULL and subsequent registrations fail with –EBUSY. Concurrent execution of the shared IRQ handler can also dereference the stale pointer while holding the slave_lock, potentially causing a crash. Fixing the race condition and ensuring the pointer is cleared on failure eliminates the possibility of a stale pointer and prevents the crash, thereby restoring reliable operation of the I2C controller.

Affected Systems

Any Linux kernel installation that includes the i2c_imx driver is potentially affected, including all i.MX platforms that rely on this I2C controller driver. The patch is applied at the kernel level, so all kernel versions prior to the commit in the linked revisions are considered vulnerable. No specific release numbers are listed, but any kernel build that contains the unpatched i2c_imx implementation is at risk.

Risk and Exploitability

The vulnerability is local and requires that an attacker can trigger I2C slave registration or interrupt handling. The lack of an EPSS score and absence from the CISA KEV catalog suggest that it is not a known exploited vulnerability, but the timing nature and local scope could allow denial of service or disruption of I2C devices on the affected system. The CVSS score is not provided; however, the impact is a denial of service due to possible device registration failure or driver crash.

Generated by OpenCVE AI on August 28, 2026 at 10:43 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the kernel to a version that contains the fixed i2c_imx driver (apply the patch from the linked commits).
  • Reboot the system or reload the module to ensure the new driver is in use.
  • Verify I2C functionality carefully after the update.

Generated by OpenCVE AI on August 28, 2026 at 10:43 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 28 Aug 2026 11:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-476
CWE-808

Fri, 28 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: i2c: imx: Fix slave registration race and error handling In i2c_imx_reg_slave(), the slave pointer was assigned before pm_runtime_resume_and_get(). If pm_runtime_resume_and_get() failed, the error path returned without clearing i2c_imx->slave, leaving it non-NULL and causing all subsequent registration attempts to fail with -EBUSY. Additionally, because this driver uses a shared IRQ, the interrupt handler i2c_imx_isr() can execute concurrently and, after acquiring slave_lock, dereference i2c_imx->slave. The previous fix attempt added a lockless i2c_imx->slave = NULL on the error path, but that could race with the ISR under the lock and still cause a NULL pointer dereference. Fix both issues by deferring the assignment of i2c_imx->slave and i2c_imx->last_slave_event to after a successful resume, and by performing the assignment inside the slave_lock critical section. This guarantees that the slave pointer is never left stale on the error path and is always valid when observed by the interrupt handler.
Title i2c: imx: Fix slave registration race and error handling
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-28T06:52:47.077Z

Reserved: 2026-08-26T14:34:25.783Z

Link: CVE-2026-80678

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-28T08:16:53.107

Modified: 2026-08-28T08:16:53.107

Link: CVE-2026-80678

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-28T10:45:04Z

Weaknesses