CVE-2026-89982 in Linuxinfo

Summary

by MITRE • 09/16/2026

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

i2c: mux: Fix channel node leak on adapter add failure

i2c_mux_add_adapter() takes a reference to the Device Tree channel node before registering the new adapter. If adapter registration fails, the error path frees the private data without dropping that reference.

Release the channel node before freeing the private data.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Analysis

by VulDB Data Team • 09/16/2026

The Linux kernel's I2C multiplexer subsystem contains a resource management flaw within the i2c_mux_add_adapter function that results in a device tree node reference leak during error handling paths. This vulnerability stems from an asymmetry in reference counting logic where the driver acquires a reference to a Device Tree channel node prior to attempting adapter registration, but fails to release this reference if the subsequent registration process encounters an error and aborts. In kernel development, proper resource lifecycle management is critical to prevent memory leaks and potential denial of service conditions over time as systems run for extended periods or undergo frequent hardware configuration changes.

The technical root cause lies in the specific sequence of operations within the adapter initialization routine. When i2c_mux_add_adapter is invoked, it parses the device tree to identify available channels and increments a reference count on the corresponding node to ensure its validity during the driver's operation. However, if the call to register the new I2C adapter fails due to resource constraints, hardware incompatibility, or other transient errors, the existing error handling code proceeds directly to freeing the private data structure associated with the multiplexer instance. Crucially, this cleanup sequence omits the necessary step of decrementing the reference count on the device tree node that was acquired earlier in the function flow. This oversight means that while the driver-specific memory is released, the kernel's core device model retains a dangling or unreleased reference to the hardware description data.

From an operational impact perspective, this vulnerability manifests as a gradual accumulation of leaked references within the kernel's device tree subsystem. While a single instance may appear benign, repeated failures during adapter registration can lead to significant memory pressure and resource exhaustion over time. This type of leak is particularly insidious because it does not typically cause immediate system crashes but rather degrades system stability by preventing proper cleanup of hardware resources. In environments where devices are frequently added or removed, such as in embedded systems with hot-pluggable peripherals or complex industrial control setups, the cumulative effect can lead to performance degradation and eventual failure to allocate new device structures when needed effectively causing a denial of service condition for I2C bus operations.

This flaw aligns with CWE-401, which describes missing release of memory after successful allocation, specifically in the context of reference counting mechanisms where resources are acquired but not properly released upon abnormal termination paths. Furthermore, it relates to CWE-755, improper handling of unusual or unexpected input conditions, as the error path represents an exceptional control flow that was inadequately handled compared to the success path. In terms of MITRE ATT&CK mapping, this vulnerability does not directly facilitate exploitation by external attackers but rather contributes to system instability which could be leveraged in conjunction with other vulnerabilities for denial-of-service attacks against critical infrastructure components relying on stable I2C communication channels.

Mitigation strategies primarily involve applying the upstream kernel patch that corrects the reference counting logic within i2c_mux_add_adapter. System administrators and developers should ensure their kernels are updated to versions where this fix is integrated, as manual code modification of core subsystem drivers is generally discouraged due to complexity and risk of introducing further bugs. For organizations maintaining custom kernel builds, it is essential to verify that the error handling block explicitly calls kref_put or equivalent reference decrement functions on the channel node before invoking kzfree or similar deallocation routines for private data structures. Regular auditing of device driver code paths using static analysis tools can help identify similar patterns where resource acquisition and release are not symmetrically balanced across all execution branches, thereby preventing future occurrences of this class of vulnerability.

Responsible

Linux

Reservation

09/11/2026

Disclosure

09/16/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you need the next level of professionalism?

Upgrade your account now!