]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ksmbd: fix wrong error response status by using set_smb2_rsp_status()
authorNamjae Jeon <linkinjeon@kernel.org>
Mon, 18 Dec 2023 15:34:36 +0000 (00:34 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Dec 2023 09:41:58 +0000 (10:41 +0100)
[ Upstream commit be0f89d4419dc5413a1cf06db3671c9949be0d52 ]

set_smb2_rsp_status() after __process_request() sets the wrong error
status. This patch resets all iov vectors and sets the error status
on clean one.

Fixes: e2b76ab8b5c9 ("ksmbd: add support for read compound")
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ksmbd/smb2pdu.c

index 00d3841c26c5ed30c098ed551fd733af9da69ea8..22bcadce3fed3058a2f1136df7df7740269a77ee 100644 (file)
@@ -231,11 +231,12 @@ void set_smb2_rsp_status(struct ksmbd_work *work, __le32 err)
 {
        struct smb2_hdr *rsp_hdr;
 
-       if (work->next_smb2_rcv_hdr_off)
-               rsp_hdr = ksmbd_resp_buf_next(work);
-       else
-               rsp_hdr = smb2_get_msg(work->response_buf);
+       rsp_hdr = smb2_get_msg(work->response_buf);
        rsp_hdr->Status = err;
+
+       work->iov_idx = 0;
+       work->iov_cnt = 0;
+       work->next_smb2_rcv_hdr_off = 0;
        smb2_set_err_rsp(work);
 }