]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
ksmbd: Fix UAF in __close_file_table_ids
authorSean Heelan <seanheelan@gmail.com>
Tue, 6 May 2025 13:04:52 +0000 (22:04 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 18 May 2025 06:24:04 +0000 (08:24 +0200)
commitfec1f9e9a650e8e7011330a085c77e7bf2a08ea9
treed759afcb4103702017589234b3bbc91a54365374
parent04c8a38c60346bb5a7c49b276de7233f703ce9cb
ksmbd: Fix UAF in __close_file_table_ids

commit 36991c1ccde2d5a521577c448ffe07fcccfe104d upstream.

A use-after-free is possible if one thread destroys the file
via __ksmbd_close_fd while another thread holds a reference to
it. The existing checks on fp->refcount are not sufficient to
prevent this.

The fix takes ft->lock around the section which removes the
file from the file table. This prevents two threads acquiring the
same file pointer via __close_file_table_ids, as well as the other
functions which retrieve a file from the IDR and which already use
this same lock.

Cc: stable@vger.kernel.org
Signed-off-by: Sean Heelan <seanheelan@gmail.com>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/smb/server/vfs_cache.c