forked from luck/tmp_suning_uos_patched
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>
This commit is contained in:
parent
1ee0e6d47d
commit
e80ddeb2f7
|
@ -2938,7 +2938,7 @@ SMB2_ioctl_init(struct cifs_tcon *tcon, struct smb_rqst *rqst,
|
||||||
* response size smaller.
|
* response size smaller.
|
||||||
*/
|
*/
|
||||||
req->MaxOutputResponse = cpu_to_le32(max_response_size);
|
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)
|
if (is_fsctl)
|
||||||
req->Flags = cpu_to_le32(SMB2_0_IOCTL_IS_FSCTL);
|
req->Flags = cpu_to_le32(SMB2_0_IOCTL_IS_FSCTL);
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue
Block a user