Message ID | 20241223153050.332-1-liangwentao@iscas.ac.cn (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ksmbd: fix a missing return value check bug | expand |
On Tue, Dec 24, 2024 at 12:37 AM Wentao Liang <liangwentao@iscas.ac.cn> wrote: > > 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> Applied it to #ksmbd-for-next-next. Thanks!
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index 599118aed205..6683ed3b7f18 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);
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> --- fs/smb/server/smb2pdu.c | 3 +++ 1 file changed, 3 insertions(+)