KernelScan.io

HIGH Introduced in 5.2

i2c Callback UAF

CVE-2026-80680

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI6.9MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: i2c: amd-mp2: Unregister callback on adapter add failure amd_mp2_register_cb() stores the platform I2C context in the MP2 PCI driver's callback table before the adapter is registered. If i2c_add_adapter() fails, probe returns and devres frees the context, but the PCI driver can still dereference the stale pointer from its IRQ and system-sleep callbacks. Unregister the callback before returning the adapter registration error.

02

Engine v0.6.0

Risk summary

A use-after-free exists in the AMD MP2 I2C platform driver where a stale callback pointer remains in the PCI driver's callback table after adapter registration fails and the context is freed. An interrupt or system-sleep transition can then dereference the freed memory. This requires AMD PCIe MP2 I2C controller hardware to be present and a local attacker able to influence adapter registration failure.

Affecteddrivers/i2c/busses/i2c-amd-mp2-plat.c (i2c amd-mp2)

Vulnerability analysis

During device initialization, the platform driver saves a callback pointer in the PCI driver's table before registering the I2C adapter. If adapter registration fails, initialization returns an error and the kernel automatically frees the platform context, but the callback pointer remains in the PCI driver's table. A later interrupt or system suspend/resume event can then dereference the freed memory, causing a use-after-free. The fix removes the callback in the failure path so the PCI driver no longer holds a stale pointer. This vulnerability only affects systems with the AMD PCIe MP2 I2C controller hardware, and an attacker would need local access to influence the adapter registration failure and then wait for an interrupt or suspend/resume cycle to trigger the stale dereference.

03

BranchIntroducedFixed inPatch commit
5.155.25.15.2162f7789b3a962
6.15.26.1.1834786d4d70dcd
6.65.26.6.151b7c2c5c88687
6.185.26.18.441883a09a37fe
mainline5.27.282048795242f
7.15.27.1.88bf719659406
5.105.25.10.2659142a3dcff0d
6.125.26.12.103cf107c5983dc
cip/5.105.25.10.268-cip779142a3dcff0d
cip/5.10-rt5.25.10.268-cip77-rt349142a3dcff0d
cip/6.15.26.1.187-cip604786d4d70dcd
cip/6.125.26.12.104-cip30cf107c5983dc