i3c: master: svc: Prevent IRQ storm from false SLVSTART on NPCM845
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.12.114, 5.16, 6.2, 6.7, 6.15, and 1 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: i3c: master: svc: Prevent IRQ storm from false SLVSTART on NPCM845 On NPCM845, when a target on the I3C bus gets stuck holding SDA low, the controller reports a false Master Request (MR) in-band interrupt event. The driver handles this by emitting a STOP condition to restore the bus. However, the hardware quirk SVC_I3C_QUIRK_FALSE_SLVSTART indicates that emitting a STOP condition may spuriously set the SLVSTART interrupt status bit. In the Master Request case, this creates a feedback loop: the STOP triggers a new SLVSTART event, the IRQ handler fires again, the controller still reports an MR type, another STOP is emitted, and the cycle repeats indefinitely, resulting in an IRQ storm that can lock up the CPU. Clear the SLVSTART status bit explicitly after emitting the STOP in the Master Request IBI handler when the SVC_I3C_QUIRK_FALSE_SLVSTART quirk is set. This breaks the feedback loop without affecting normal SLVSTART processing, which is already guarded in the top-level IRQ handler by checking that MSTATUS is in SLVREQ state.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 1ea4653cff35c29d1dd0b14ad9c8245e7318f337 · fixed in 335f72b1f9bbcf0f4cc5a505443b15f1af563b4f; From 0430bf9bc1ac068c8b8c540eb93e5751872efc51 · fixed in e9b139c4684ed8593a0b779ca02ea05f460b2eec; From 0430bf9bc1ac068c8b8c540eb93e5751872efc51 · fixed in 1effa3adfe53cb2bb28bf5640a676b791d5ab405; From 6.12.31 · fixed in 6.12.114; From 5.15.185 · fixed in 5.16; From 6.1.141 · fixed in 6.2; From 6.6.93 · fixed in 6.7; From 6.14.9 · fixed in 6.15
- Linux Linux
6.15
- KernelLinux
fixed in 6.12.114; From 6.13.0 · fixed in 6.18.53