Linux: smb: client: avoid leaking refcount when cifs_sb_tlink() fails
What fixes it
- 55c5f095d4df14271b238f826e1392fda7b6e60eLinuxCVE List
- 9ec991e148368e3207e98134c509a625097f7693LinuxCVE List
- 1d1b0f1d812a4011a57bc6c70492c34a2e46c6ddLinuxCVE List
- 23b26f4408ac3f35a482d2e5cf6fc865d4201b71LinuxCVE List
- 6.1.189LinuxCVE List
- 5.16LinuxCVE List
Show all 7 fixed versions
- 6.5LinuxCVE 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:
smb: client: avoid leaking refcount when cifs_sb_tlink() fails
cifs_oplock_break() takes over the reference that cifs_queue_oplock_break() acquired when it queued the work, and drops it with _cifsFileInfo_put() once the break has been processed.
Only in setups with "-o multiuser", cifs_sb_tlink() may fail, at which point cifs_oplock_break() returns without putting the file reference, mirroring the reference leak we already fixed in the companion patch to cifs_queue_oplock_break().
This would trigger a crash due to busy inodes on the next unmount:
BUG: Dentry ... still in use (1) [unmount of cifs cifs] VFS: Busy inodes after unmount of cifs (cifs)
Drop the reference on that path as well. Doing so before the out label mirrors the normal path, which also puts the reference before cifs_done_oplock_break().
Found by Sashiko code review. The failure path was not exercised at runtime.
Text from CVE List
Affected versions 19
- Linuxaffected: 5ee28bcfbaacf289eb25c662a2862542ea6ce6a7 before 55c5f095d4df14271b238f826e1392fda7b6e60eCVE List
- Linuxaffected: e8f5f849ffce24490eb9449e98312b66c0dba76f before e9c5bcc88b8337157e480c85a6d2f326bc265012CVE List
- Linuxaffected: e8f5f849ffce24490eb9449e98312b66c0dba76f before 9ec991e148368e3207e98134c509a625097f7693CVE List
- Linuxaffected: e8f5f849ffce24490eb9449e98312b66c0dba76f before dd03fd658ea59821505e0e643b6b7cbdf51c4e1dCVE List
- Linuxaffected: e8f5f849ffce24490eb9449e98312b66c0dba76f before 1d1b0f1d812a4011a57bc6c70492c34a2e46c6ddCVE List
- Linuxaffected: e8f5f849ffce24490eb9449e98312b66c0dba76f before 23b26f4408ac3f35a482d2e5cf6fc865d4201b71CVE List
- Linuxaffected: b99f490ea87ebcca3a429fd8837067feb56a4c7cCVE List
- Linuxaffected: 6b67a6d2e50634fe127e656147c81915955e9f5eCVE List
- Linuxaffected: 6.1.47 before 6.1.189CVE List
- Linuxaffected: 5.15.128 before 5.16CVE List
- Linuxaffected: 6.4.12 before 6.5CVE List
- Linuxaffected: 6.5CVE List
- Linuxunaffected: all versions before 6.5CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2.7 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 6
- git.kernel.org/stable/c/55c5f095d4df14271b238f826e1392fda7b6e60eReferencevia CVE List
- git.kernel.org/stable/c/e9c5bcc88b8337157e480c85a6d2f326bc265012Referencevia CVE List
- git.kernel.org/stable/c/9ec991e148368e3207e98134c509a625097f7693Referencevia CVE List
- git.kernel.org/stable/c/dd03fd658ea59821505e0e643b6b7cbdf51c4e1dReferencevia CVE List
- git.kernel.org/stable/c/1d1b0f1d812a4011a57bc6c70492c34a2e46c6ddReferencevia CVE List
- git.kernel.org/stable/c/23b26f4408ac3f35a482d2e5cf6fc865d4201b71Referencevia CVE List