]> git.ipfire.org Git - thirdparty/linux.git/commit - fs/smb/server/vfs.c
ksmbd: fix racy issue while destroying session on multichannel
authorNamjae Jeon <linkinjeon@kernel.org>
Mon, 25 Jul 2022 04:36:52 +0000 (13:36 +0900)
committerSteve French <stfrench@microsoft.com>
Mon, 1 Aug 2022 04:14:32 +0000 (23:14 -0500)
commitaf7c39d971e43cd0af488729bca362427ad99488
tree3c174aa7d504f663a6741a5dffee77666f86df65
parenta14c573870a664386adc10526a6c2648ea56dae1
ksmbd: fix racy issue while destroying session on multichannel

After multi-channel connection with windows, Several channels of
session are connected. Among them, if there is a problem in one channel,
Windows connects again after disconnecting the channel. In this process,
the session is released and a kernel oop can occurs while processing
requests to other channels. When the channel is disconnected, if other
channels still exist in the session after deleting the channel from
the channel list in the session, the session should not be released.
Finally, the session will be released after all channels are disconnected.

Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Reviewed-by: Hyunchul Lee <hyc.lee@gmail.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
12 files changed:
fs/ksmbd/auth.c
fs/ksmbd/auth.h
fs/ksmbd/connection.h
fs/ksmbd/mgmt/tree_connect.c
fs/ksmbd/mgmt/tree_connect.h
fs/ksmbd/mgmt/user_session.c
fs/ksmbd/mgmt/user_session.h
fs/ksmbd/oplock.c
fs/ksmbd/smb2pdu.c
fs/ksmbd/smb_common.h
fs/ksmbd/vfs.c
fs/ksmbd/vfs_cache.c