In the Linux kernel, the following vulnerability has been resolved:
cifs: Fix memory leak on the deferred close
xfstests on smb21 report kmemleak as below:
unreferenced object 0xffff8881767d6200 (size 64): comm "xfs_io", pid 1284, jiffies 4294777434 (age 20.789s) hex dump (first 32 bytes): 80 5a d0 11 81 88 ff ff 78 8a aa 63 81 88 ff ff .Z......x..c.... 00 71 99 76 81 88 ff ff 00 00 00 00 00 00 00 00 .q.v............ backtrace: [<00000000ad04e6ea>] cifs_close+0x92/0x2c0 [<0000000028b93c82>] __fput+0xff/0x3f0 [<00000000d8116851>] task_work_run+0x85/0xc0 [<0000000027e14f9e>] do_exit+0x5e5/0x1240 [<00000000fb492b95>] do_group_exit+0x58/0xe0 [<00000000129a32d9>] __x64_sys_exit_group+0x28/0x30 [<00000000e3f7d8e9>] do_syscall_64+0x35/0x80 [<00000000102e8a0b>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
When cancel the deferred close work, we should also cleanup the struct cifs_deferred_close.
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 5.13.12 | 5.14 |
| linux / linux_kernel | 5.14.1 | 5.15.63 |
| linux / linux_kernel | 5.16 | 5.19.4 |
| linux / linux_kernel | 5.14 | 5.14.x |
| linux / linux_kernel | 5.14-rc6 | 5.14-rc6.x |
| linux / linux_kernel | 5.14-rc7 | 5.14-rc7.x |
| linux / linux_kernel | 6.0-rc1 | 6.0-rc1.x |