summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWentao Liang <liangwentao@iscas.ac.cn>2024-12-23 23:30:50 +0800
committerSteve French <stfrench@microsoft.com>2025-01-05 20:43:37 -0600
commit4c16e1cadcbcaf3c82d5fc310fbd34d0f5d0db7c (patch)
tree142ca01935f787c73edeead113bee9aaa8d98d04
parent9d89551994a430b50c4fffcb1e617a057fa76e20 (diff)
downloadlwn-4c16e1cadcbcaf3c82d5fc310fbd34d0f5d0db7c.tar.gz
lwn-4c16e1cadcbcaf3c82d5fc310fbd34d0f5d0db7c.zip
ksmbd: fix a missing return value check bug
In the smb2_send_interim_resp(), if ksmbd_alloc_work_struct() fails to allocate a node, it returns a NULL pointer to the in_work pointer. This can lead to an illegal memory write of in_work->response_buf when allocate_interim_rsp_buf() attempts to perform a kzalloc() on it. To address this issue, incorporating a check for the return value of ksmbd_alloc_work_struct() ensures that the function returns immediately upon allocation failure, thereby preventing the aforementioned illegal memory access. Fixes: 041bba4414cd ("ksmbd: fix wrong interim response on compound") Signed-off-by: Wentao Liang <liangwentao@iscas.ac.cn> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r--fs/smb/server/smb2pdu.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index 23e21845f928..433e33c04039 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -695,6 +695,9 @@ void smb2_send_interim_resp(struct ksmbd_work *work, __le32 status)
struct smb2_hdr *rsp_hdr;
struct ksmbd_work *in_work = ksmbd_alloc_work_struct();
+ if (!in_work)
+ return;
+
if (allocate_interim_rsp_buf(in_work)) {
pr_err("smb_allocate_rsp_buf failed!\n");
ksmbd_free_work_struct(in_work);