HIGH Introduced in 6.18
i3c XferQueue Race
CVE-2026-80953
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
KernelScan AI5.1MEDIUM
01Description
In the Linux kernel, the following vulnerability has been resolved: i3c: master: adi: initialize the lock before enabling interrupts adi_i3c_master_probe() requests the IRQ and unmasks REG_IRQ_PENDING_CMDR before the controller's IBI state, transfer queue list and transfer queue lock are initialized. A pending CMDR interrupt can therefore run adi_i3c_master_irq() and take master->xferqueue.lock before the dynamic lock has been initialized. This issue was found by our static analysis tool and then manually reviewed against the current tree. The grounded PoC kept the probe ordering and the IRQ path adi_i3c_master_probe() -> adi_i3c_master_irq() -> xferqueue.lock, with a pending CMDR interrupt arriving after REG_IRQ_PENDING_CMDR is unmasked. Lockdep reported: INFO: trying to register non-static key. you didn't initialize this object before use? lock_acquire+0xbb/0x290 _raw_spin_lock_irqsave+0x36/0x60 adi_i3c_master_irq+0x32/0x56 [vuln_msv] adi_i3c_master_probe+0x5a/0xf47 [vuln_msv] Initialize the transfer queue and IBI state before requesting and unmasking the IRQ.
02KernelScan AI Analysis
Risk summary
A race condition in the Analog Devices I3C master driver allows a pending interrupt to fire before the transfer queue lock and list are initialized during device probe, causing a kernel crash. The vulnerability requires the specific ADI I3C controller hardware to be present and is triggered at boot or device re-probe. Impact is limited to denial of service via NULL pointer dereference.
Vulnerability analysis
During device startup, this driver enables interrupts before its internal queue and locking structures are ready. If an interrupt fires in that narrow window, the handler tries to use an uninitialized lock and list, which causes a kernel crash. The corrected driver prepares all internal state before turning on interrupts. The issue only affects systems that include this specific controller chip, and it triggers automatically when the kernel sets up the device at boot or on re-probe without requiring any user action or privileges.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.18 | 6.18 | 6.18.50 | a15a1b95de98 |
| 7.2 | 6.18 | 7.2.4 | de8c32b0a246 |
| mainline | 6.18 | 7.3 | 8a53f9102a0d |