Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: cifs: fix cifsFileInfo leak on kmalloc failure in deferred close drain paths In cifs_close_deferred_file(), cifs_close_all_deferred_files(), and cifs_close_deferred_file_under_dentry(), when a pending deferred close is cancelled via cancel_delayed_work(), the subsequent kmalloc_obj() to add the file to the local processing list may fail under memory pressure. The loop breaks immediately, but the cancelled work is no longer pending (it would have called _cifsFileInfo_put()), and the cfile is never added to file_head for processing. The cifsFileInfo reference and the open server handle both leak. Fix by saving the cfile that failed allocation in a local variable, breaking as before, and calling _cifsFileInfo_put() on it after releasing the lock. Any files later in the iteration are unaffected since their deferred work is still pending and will fire normally.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected e3fc065682ebbbd15b0ce0036800f4acbf765d46 before c968b2417f6a15d35ff4b97d534af4a126cb510b; affected e3fc065682ebbbd15b0ce0036800f4acbf765d46 before 7af7ec3af091f55d01f0ebe0246d10e37f358311; affected e3fc065682ebbbd15b0ce0036800f4acbf765d46 before 6089f561e2c31a3ba52836c75c7d2ab50d2eea41; affected e3fc065682ebbbd15b0ce0036800f4acbf765d46 before 32390b3f06f26e366cfb27dbac4bc0196c321535; affected e3fc065682ebbbd15b0ce0036800f4acbf765d46 before c2f2e83e3bbc5483730fd4ee903182761f1ae50f |
| Linux / Linux | affected 5.15; unaffected 0 before 5.15; unaffected 6.6.160 through 6.6.*; unaffected 6.12.114 through 6.12.*; unaffected 6.18.57 through 6.18.*; unaffected 7.1.6 through 7.1.*; unaffected 7.2 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/c968b2417f6a15d35ff4b97d534af4a126cb510b
- https://git.kernel.org/stable/c/7af7ec3af091f55d01f0ebe0246d10e37f358311
- https://git.kernel.org/stable/c/6089f561e2c31a3ba52836c75c7d2ab50d2eea41
- https://git.kernel.org/stable/c/32390b3f06f26e366cfb27dbac4bc0196c321535
- https://git.kernel.org/stable/c/c2f2e83e3bbc5483730fd4ee903182761f1ae50f