aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve French <[email protected]>2020-06-03 01:33:58 -0500
committerSteve French <[email protected]>2020-06-04 01:13:41 -0500
commite80ddeb2f70ebd0786aa7cdba3e58bc931fa0bb5 (patch)
treeb8cc79c32b991e33a3bf7ba1ba8c56518aee1f8f
parent1ee0e6d47d08ef309e0975a96d643972855511d0 (diff)
smb3: fix incorrect number of credits when ioctl MaxOutputResponse > 64K
We were not checking to see if ioctl requests asked for more than 64K (ie when CIFSMaxBufSize was > 64K) so when setting larger CIFSMaxBufSize then ioctls would fail with invalid parameter errors. When requests ask for more than 64K in MaxOutputResponse then we need to ask for more than 1 credit. Signed-off-by: Steve French <[email protected]> CC: Stable <[email protected]> Reviewed-by: Aurelien Aptel <[email protected]>
-rw-r--r--fs/cifs/smb2pdu.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 06463f386a60..12de0af12f75 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -2938,7 +2938,7 @@ SMB2_ioctl_init(struct cifs_tcon *tcon, struct smb_rqst *rqst,
* response size smaller.
*/
req->MaxOutputResponse = cpu_to_le32(max_response_size);
-
+ req->sync_hdr.CreditCharge = cpu_to_le16(DIV_ROUND_UP(max_response_size, SMB2_MAX_BUFFER_SIZE));
if (is_fsctl)
req->Flags = cpu_to_le32(SMB2_0_IOCTL_IS_FSCTL);
else