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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
5ee28bcfbaacf289eb25c662a2862542ea6ce6a7 to < 55c5f095d4df14271b238f826e1392fda7b6e60eaffectede8f5f849ffce24490eb9449e98312b66c0dba76f to < e9c5bcc88b8337157e480c85a6d2f326bc265012affectede8f5f849ffce24490eb9449e98312b66c0dba76f to < 9ec991e148368e3207e98134c509a625097f7693affectede8f5f849ffce24490eb9449e98312b66c0dba76f to < dd03fd658ea59821505e0e643b6b7cbdf51c4e1daffectede8f5f849ffce24490eb9449e98312b66c0dba76f to < 1d1b0f1d812a4011a57bc6c70492c34a2e46c6ddaffectede8f5f849ffce24490eb9449e98312b66c0dba76f to < 23b26f4408ac3f35a482d2e5cf6fc865d4201b71affectedb99f490ea87ebcca3a429fd8837067feb56a4c7caffected6b67a6d2e50634fe127e656147c81915955e9f5eaffected6.1.47 to < 6.1.189affected5.15.128 to < 5.16affected6.4.12 to < 6.5affected
Linux Linux
Default version status: affected
6.5affected0 to < 6.5unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.53 to ≤ 6.18.*unaffected7.2.7 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/55c5f095d4df14271b238f826e1392fda7b6e60e ↗
- https://git.kernel.org/stable/c/e9c5bcc88b8337157e480c85a6d2f326bc265012 ↗
- https://git.kernel.org/stable/c/9ec991e148368e3207e98134c509a625097f7693 ↗
- https://git.kernel.org/stable/c/dd03fd658ea59821505e0e643b6b7cbdf51c4e1d ↗
- https://git.kernel.org/stable/c/1d1b0f1d812a4011a57bc6c70492c34a2e46c6dd ↗
- https://git.kernel.org/stable/c/23b26f4408ac3f35a482d2e5cf6fc865d4201b71 ↗