Linux: i3c: master: Fix device_register() error path
What fixes it
- 5bf498623f8397d45f85f14cd631c5e5a565c2fbLinuxCVE List
- 20a2b6df91fd782ef2ff551febef594d0b46a9a7LinuxCVE List
- 7f8e2c4f3704d9774bb26b49b1ad6a60ae57d4a0LinuxCVE List
- 7ef12e1dd06e442eebf370f6e53c41bd056d0f22LinuxCVE List
- 6ecf17bf5fe8da51a6e3fc9e03a76898fcc5c6cfLinuxCVE List
- 74be657d98a8d684c0475f3cbd450ef2a30ffc73LinuxCVE List
Show all 12 fixed versions
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
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.
Text from CVE List
Affected versions 26
- Linuxaffected: 1832ed55df45f4145335ad992fb83813cdc58b5d before 5bf498623f8397d45f85f14cd631c5e5a565c2fbCVE List
- Linuxaffected: d48fe8d98171e0fffdeaa8b37ce0a6444bff819b before 20a2b6df91fd782ef2ff551febef594d0b46a9a7CVE List
- Linuxaffected: 174ae0a3b89e7804e4ea3d31bd83d6e43f39568c before a14dbdf471001dd0601b0c491184990c178a199cCVE List
- Linuxaffected: e49a51a96b531f1b4bcd8d358e645b6c74ef67e6 before d22ad96f1a0c89e0ba66a2facc7430f0923919e3CVE List
- Linuxaffected: cab63f64887616e3c4e31cfd8103320be6ebc8d3 before 7f8e2c4f3704d9774bb26b49b1ad6a60ae57d4a0CVE List
- Linuxaffected: cab63f64887616e3c4e31cfd8103320be6ebc8d3 before 7ef12e1dd06e442eebf370f6e53c41bd056d0f22CVE List
- Linuxaffected: cab63f64887616e3c4e31cfd8103320be6ebc8d3 before 6ecf17bf5fe8da51a6e3fc9e03a76898fcc5c6cfCVE List
- Linuxaffected: cab63f64887616e3c4e31cfd8103320be6ebc8d3 before 74be657d98a8d684c0475f3cbd450ef2a30ffc73CVE List
- Linuxaffected: 204beeb509d37669de34560e83bb8abffe7ee63aCVE List
- Linuxaffected: b24cf43d9babf1265a2bb0ae8d198267cef43b83CVE List
- Linuxaffected: 5.10.201 before 5.10.270CVE List
- Linuxaffected: 5.15.139 before 5.15.221CVE List
- Linuxaffected: 6.1.63 before 6.1.188CVE List
- Linuxaffected: 6.6.2 before 6.6.157CVE List
- Linuxaffected: 5.4.261 before 5.5CVE List
- Linuxaffected: 6.5.12 before 6.6CVE List
- Linuxaffected: 6.7CVE List
- Linuxunaffected: all versions before 6.7CVE List
- Linuxunaffected: 5.10.270 through 5.10.*CVE List
- Linuxunaffected: 5.15.221 through 5.15.*CVE List
- Linuxunaffected: 6.1.188 through 6.1.*CVE List
- Linuxunaffected: 6.6.157 through 6.6.*CVE List
- Linuxunaffected: 6.12.110 through 6.12.*CVE List
- Linuxunaffected: 6.18.52 through 6.18.*CVE List
- Linuxunaffected: 7.2.6 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 8
- git.kernel.org/stable/c/5bf498623f8397d45f85f14cd631c5e5a565c2fbReferencevia CVE List
- git.kernel.org/stable/c/20a2b6df91fd782ef2ff551febef594d0b46a9a7Referencevia CVE List
- git.kernel.org/stable/c/a14dbdf471001dd0601b0c491184990c178a199cReferencevia CVE List
- git.kernel.org/stable/c/d22ad96f1a0c89e0ba66a2facc7430f0923919e3Referencevia CVE List
- git.kernel.org/stable/c/7f8e2c4f3704d9774bb26b49b1ad6a60ae57d4a0Referencevia CVE List
- git.kernel.org/stable/c/7ef12e1dd06e442eebf370f6e53c41bd056d0f22Referencevia CVE List
- git.kernel.org/stable/c/6ecf17bf5fe8da51a6e3fc9e03a76898fcc5c6cfReferencevia CVE List
- git.kernel.org/stable/c/74be657d98a8d684c0475f3cbd450ef2a30ffc73Referencevia CVE List