diff options
author | Wentao Liang <liangwentao@iscas.ac.cn> | 2024-12-23 16:30:50 +0100 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2025-01-06 03:43:37 +0100 |
commit | 4c16e1cadcbcaf3c82d5fc310fbd34d0f5d0db7c (patch) | |
tree | 142ca01935f787c73edeead113bee9aaa8d98d04 /fs | |
parent | Linux 6.13-rc6 (diff) | |
download | linux-4c16e1cadcbcaf3c82d5fc310fbd34d0f5d0db7c.tar.xz linux-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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/smb/server/smb2pdu.c | 3 |
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); |