i3c: master: Fix device_register() error path
- 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 5.10.270, 5.15.221, 6.1.188, 6.6.157, 5.5, and 4 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: Fix device_register() error path When device_register() fails in i3c_master_register_new_i3c_devs(), put_device() is called to drop the reference taken by device_register(). That drops the last reference, so the device's release callback i3c_device_release() runs and frees the i3c_device. Two problems follow from that: i3c_device_release() does WARN_ON(i3cdev->desc), so it warns because desc->dev->desc still points back at the descriptor. Clear it before calling put_device(). After put_device() frees the i3c_device, desc->dev is left pointing at freed memory, so clear desc->dev as well. That prevents, for example, i3c_master_unregister_i3c_devs() seeing desc->dev as non-NULL and dereferencing it.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 1832ed55df45f4145335ad992fb83813cdc58b5d · fixed in 5bf498623f8397d45f85f14cd631c5e5a565c2fb; From d48fe8d98171e0fffdeaa8b37ce0a6444bff819b · fixed in 20a2b6df91fd782ef2ff551febef594d0b46a9a7; From 174ae0a3b89e7804e4ea3d31bd83d6e43f39568c · fixed in a14dbdf471001dd0601b0c491184990c178a199c; From e49a51a96b531f1b4bcd8d358e645b6c74ef67e6 · fixed in d22ad96f1a0c89e0ba66a2facc7430f0923919e3; From cab63f64887616e3c4e31cfd8103320be6ebc8d3 · fixed in 7f8e2c4f3704d9774bb26b49b1ad6a60ae57d4a0; From cab63f64887616e3c4e31cfd8103320be6ebc8d3 · fixed in 7ef12e1dd06e442eebf370f6e53c41bd056d0f22; From cab63f64887616e3c4e31cfd8103320be6ebc8d3 · fixed in 6ecf17bf5fe8da51a6e3fc9e03a76898fcc5c6cf; From cab63f64887616e3c4e31cfd8103320be6ebc8d3 · fixed in 74be657d98a8d684c0475f3cbd450ef2a30ffc73; From 5.10.201 · fixed in 5.10.270; From 5.15.139 · fixed in 5.15.221; From 6.1.63 · fixed in 6.1.188; From 6.6.2 · fixed in 6.6.157; From 5.4.261 · fixed in 5.5; From 6.5.12 · fixed in 6.6
- Linux Linux
6.7
- KernelLinux
fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.110; fixed in 6.18.52; From 6.13.0 · fixed in 7.2.6
References 8
git.kernel.org
- stable/c/5bf498623f8397d45f85f14cd631c5e5a565c2fb
- stable/c/20a2b6df91fd782ef2ff551febef594d0b46a9a7
- stable/c/a14dbdf471001dd0601b0c491184990c178a199c
- stable/c/d22ad96f1a0c89e0ba66a2facc7430f0923919e3
- stable/c/7f8e2c4f3704d9774bb26b49b1ad6a60ae57d4a0
- stable/c/7ef12e1dd06e442eebf370f6e53c41bd056d0f22
- stable/c/6ecf17bf5fe8da51a6e3fc9e03a76898fcc5c6cf
- stable/c/74be657d98a8d684c0475f3cbd450ef2a30ffc73