Linux: usb: gadget: f_tcm: fix deadlock in usbg_make_tpg()
What fixes it
- 3639438a4c83ffc2e564c8c010b92137c5d11cfaLinuxCVE List
- 78a14ea2284825055ab6c2a1f3489510f560f3a2LinuxCVE List
- 6bcd9ee6ad6989d1d85a7459687e45b7ad7568d9LinuxCVE List
- 9dbf74f4022f80f7669d2b3c22c5deb46c1b5674LinuxCVE List
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:
usb: gadget: f_tcm: fix deadlock in usbg_make_tpg()
usbg_make_tpg() held dep_lock while calling configfs_depend_item_unlocked(), which acquires the configfs root inode lock when operating across subsystems. This creates a circular lock dependency with configfs_rmdir():
dep_lock -> configfs root inode lock -> su_mutex -> dep_lock
In usbg_make_tpg(), dep_lock only serialized the read of opts->ready, which is a monotonic flag that transitions from false to true exactly once (in tcm_set_name()) and never reverts. Remove dep_lock from usbg_make_tpg() entirely and use READ_ONCE/WRITE_ONCE to access opts->ready locklessly instead.
Text from CVE List
Affected versions 18
- Linuxaffected: 4bb8548df632187d5db50878e71804af5f7c51ad before abad5daa41cf5d0a0a9cba0397d3a0e7f11e0277CVE List
- Linuxaffected: 4bb8548df632187d5db50878e71804af5f7c51ad before 3639438a4c83ffc2e564c8c010b92137c5d11cfaCVE List
- Linuxaffected: 4bb8548df632187d5db50878e71804af5f7c51ad before 78a14ea2284825055ab6c2a1f3489510f560f3a2CVE List
- Linuxaffected: 4bb8548df632187d5db50878e71804af5f7c51ad before eef3e62f90d86c1c5651742f84ecc9db1814a893CVE List
- Linuxaffected: 4bb8548df632187d5db50878e71804af5f7c51ad before f81a2da137b029a282b9bc64d2f267d242948659CVE List
- Linuxaffected: 4bb8548df632187d5db50878e71804af5f7c51ad before 6bcd9ee6ad6989d1d85a7459687e45b7ad7568d9CVE List
- Linuxaffected: 4bb8548df632187d5db50878e71804af5f7c51ad before d90b0f90e30cd59b36005a4016b15cf02bcd7fb2CVE List
- Linuxaffected: 4bb8548df632187d5db50878e71804af5f7c51ad before 9dbf74f4022f80f7669d2b3c22c5deb46c1b5674CVE List
- Linuxaffected: 4.5CVE List
- Linuxunaffected: all versions before 4.5CVE 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.109 through 6.12.*CVE List
- Linuxunaffected: 6.18.50 through 6.18.*CVE List
- Linuxunaffected: 7.2.4 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 8
- git.kernel.org/stable/c/abad5daa41cf5d0a0a9cba0397d3a0e7f11e0277Referencevia CVE List
- git.kernel.org/stable/c/3639438a4c83ffc2e564c8c010b92137c5d11cfaReferencevia CVE List
- git.kernel.org/stable/c/78a14ea2284825055ab6c2a1f3489510f560f3a2Referencevia CVE List
- git.kernel.org/stable/c/eef3e62f90d86c1c5651742f84ecc9db1814a893Referencevia CVE List
- git.kernel.org/stable/c/f81a2da137b029a282b9bc64d2f267d242948659Referencevia CVE List
- git.kernel.org/stable/c/6bcd9ee6ad6989d1d85a7459687e45b7ad7568d9Referencevia CVE List
- git.kernel.org/stable/c/d90b0f90e30cd59b36005a4016b15cf02bcd7fb2Referencevia CVE List
- git.kernel.org/stable/c/9dbf74f4022f80f7669d2b3c22c5deb46c1b5674Referencevia CVE List