summaryrefslogtreecommitdiff
path: root/fs/smb/server/server.c
diff options
context:
space:
mode:
authorNamjae Jeon <linkinjeon@kernel.org>2024-12-05 21:38:47 +0900
committerSteve French <stfrench@microsoft.com>2024-12-10 17:48:06 -0600
commitb95629435b84b9ecc0c765995204a4d8a913ed52 (patch)
treeaa358c099928cca7c4f7c31da3bc92ad9b6a615c /fs/smb/server/server.c
parent2b904d61a97e8ba79e3bc216ba290fd7e1d85028 (diff)
downloadlinux-next-b95629435b84b9ecc0c765995204a4d8a913ed52.tar.gz
linux-next-b95629435b84b9ecc0c765995204a4d8a913ed52.zip
ksmbd: fix racy issue from session lookup and expire
Increment the session reference count within the lock for lookup to avoid racy issue with session expire. Cc: stable@vger.kernel.org Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-25737 Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/smb/server/server.c')
-rw-r--r--fs/smb/server/server.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/smb/server/server.c b/fs/smb/server/server.c
index 930d7566b52e..3ba95bd8edeb 100644
--- a/fs/smb/server/server.c
+++ b/fs/smb/server/server.c
@@ -241,14 +241,14 @@ send:
if (work->tcon)
ksmbd_tree_connect_put(work->tcon);
smb3_preauth_hash_rsp(work);
- if (work->sess)
- ksmbd_user_session_put(work->sess);
if (work->sess && work->sess->enc && work->encrypted &&
conn->ops->encrypt_resp) {
rc = conn->ops->encrypt_resp(work);
if (rc < 0)
conn->ops->set_rsp_status(work, STATUS_DATA_ERROR);
}
+ if (work->sess)
+ ksmbd_user_session_put(work->sess);
ksmbd_conn_write(work);
}