CVE-2026-53400 Overview
CVE-2026-53400 is a race condition in the Linux kernel's Inter-Integrated Circuit (I2C) core subsystem. The vulnerability affects the adapter registration path in drivers/i2c/i2c-core-base.c, where an adapter can be inserted into the IDR (ID Radix tree) lookup structure before its embedded struct device is fully initialized. A concurrent caller invoking i2c_get_adapter() may take a reference to this partially initialized adapter, leading to access of uninitialized data. The i2c-dev character device, registered through a bus notifier, relies on i2c_get_adapter() and exposes this window during boot or driver load.
Critical Impact
Local exploitation of the race can trigger NULL-pointer dereference or use-after-free conditions in the I2C core, resulting in kernel memory corruption or denial of service.
Affected Products
- Linux kernel (multiple stable branches prior to the fix commits)
- Distributions shipping vulnerable kernels with the I2C subsystem enabled
- Embedded and server platforms using i2c-dev userspace interfaces
Discovery Timeline
- 2026-07-19 - CVE-2026-53400 published to NVD
- 2026-07-24 - Last updated in NVD database
Technical Details for CVE-2026-53400
Vulnerability Analysis
The I2C core allows kernel components to look up an adapter by numeric ID with i2c_get_adapter(), which returns a reference to the adapter's embedded struct device. The registration routine previously added the adapter to the global IDR before completing initialization of the embedded device structure. A concurrent lookup could therefore observe an entry whose fields had not yet been populated.
The issue is classified as a race condition [CWE-362] with downstream use-after-free [CWE-416] and NULL-pointer dereference [CWE-476] impact. Local attackers with the ability to open /dev/i2c-* nodes or trigger bus notifier callbacks can attempt to race the registration path.
Root Cause
The root cause is an ordering defect in adapter registration. The adapter was made discoverable through the IDR before device_initialize()-related state on the embedded device was complete. Because the i2c-dev chardev is registered from a bus notifier that itself calls i2c_get_adapter(), the adapter must be present in the IDR early — but nothing enforced that its device fields were valid at that point. The fix reorders initialization so the adapter's struct device is fully set up before IDR insertion.
Attack Vector
Exploitation requires local access and the ability to interact with the I2C subsystem, either by opening i2c-dev nodes or by inducing adapter registration events. An attacker races the registration of a new adapter with a lookup, dereferencing uninitialized pointers or freed memory. Successful exploitation can crash the kernel or corrupt kernel memory, potentially escalating privileges on systems where kernel memory can be manipulated deterministically.
No public proof-of-concept is available, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. Technical details are documented across the upstream fix commits, including Kernel Git Commit 1febb17 and Kernel Git Commit da9d8d9.
Detection Methods for CVE-2026-53400
Indicators of Compromise
- Kernel oops or panic messages referencing i2c_get_adapter, i2c_register_adapter, or the i2c-dev bus notifier path.
- Unexpected NULL-pointer dereferences or use-after-free KASAN reports in I2C core code paths during boot or module load.
- Repeated userspace processes opening /dev/i2c-* immediately after driver insertion on a multi-CPU system.
Detection Strategies
- Enable Kernel Address Sanitizer (KASAN) and lockdep in test kernels to surface the race during I2C driver stress tests.
- Collect dmesg output and kernel crash dumps from production systems and search for I2C core stack traces.
- Inventory installed kernel versions against the stable branches patched by the referenced upstream commits.
Monitoring Recommendations
- Forward kernel logs to a centralized logging platform and alert on Oops, BUG:, or KASAN entries involving i2c-core.
- Monitor module load and unload events for I2C bus drivers, correlating them with process access to /dev/i2c-*.
- Track kernel package versions across the fleet and flag hosts running kernels older than the fixed stable releases.
How to Mitigate CVE-2026-53400
Immediate Actions Required
- Apply the vendor-supplied kernel update that includes the upstream I2C core registration fix.
- Restrict access to /dev/i2c-* device nodes to trusted users and services through file permissions and udev rules.
- Unload I2C drivers that are not required on servers and workstations to reduce the attack surface.
Patch Information
The vulnerability is resolved in mainline and multiple stable branches through the following commits: 1febb17, 2e57c78, 6a94603, 78793c7, a4365bc, a4c8094, ba14d7c, and da9d8d9. Rebuild custom kernels against these commits or update to distribution kernels that incorporate them.
Workarounds
- Blacklist the i2c-dev module on systems that do not require userspace I2C access using /etc/modprobe.d/.
- Set stricter permissions on I2C device nodes so that only privileged users can trigger adapter lookups.
- Limit local user accounts and containers from loading kernel modules that register new I2C adapters.
# Configuration example: restrict i2c-dev on hosts that do not need it
echo 'blacklist i2c_dev' | sudo tee /etc/modprobe.d/blacklist-i2c-dev.conf
sudo depmod -a
# Tighten permissions on any exposed i2c device nodes
sudo tee /etc/udev/rules.d/60-i2c-restrict.rules <<'EOF'
KERNEL=="i2c-[0-9]*", MODE="0600", OWNER="root", GROUP="root"
EOF
sudo udevadm control --reload-rules && sudo udevadm trigger
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

