diff options
author | 2020-06-03 01:33:58 -0500 | |
---|---|---|
committer | 2020-06-04 01:13:41 -0500 | |
commit | e80ddeb2f70ebd0786aa7cdba3e58bc931fa0bb5 (patch) | |
tree | b8cc79c32b991e33a3bf7ba1ba8c56518aee1f8f /fs | |
parent | smb3: default to minimum of two channels when multichannel specified (diff) | |
download | linux-e80ddeb2f70ebd0786aa7cdba3e58bc931fa0bb5.tar.gz linux-e80ddeb2f70ebd0786aa7cdba3e58bc931fa0bb5.tar.bz2 linux-e80ddeb2f70ebd0786aa7cdba3e58bc931fa0bb5.zip |
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 <stfrench@microsoft.com>
CC: Stable <stable@vger.kernel.org>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/cifs/smb2pdu.c | 2 |
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 |