diff options
author | Steve French <smfrench@gmail.com> | 2013-06-25 00:20:49 -0500 |
---|---|---|
committer | Steve French <smfrench@gmail.com> | 2013-06-26 17:31:29 -0500 |
commit | 4a72dafa19ba77a2fb77ae676f8e3a0d6077c37c (patch) | |
tree | 036805a2dd4080dd833fdfa41a79e18562fd5042 /fs/cifs/smb2misc.c | |
parent | 2b80d049eb6dd08431f63fc0c5ce78567648a033 (diff) | |
download | lwn-4a72dafa19ba77a2fb77ae676f8e3a0d6077c37c.tar.gz lwn-4a72dafa19ba77a2fb77ae676f8e3a0d6077c37c.zip |
SMB2 FSCTL and IOCTL worker function
This worker function is needed to send SMB2 fsctl
(and ioctl) requests including:
validating negotiation info (secure negotiate)
querying the servers network interfaces
copy offload (refcopy)
Followon patches for the above three will use this.
This patch also does general validation of the response.
In the future, as David Disseldorp notes, for the copychunk ioctl
case, we will want to enhance the response processing to allow
returning the chunk request limits to the caller (even
though the server returns an error, in that case we would
return data that the caller could use - see 2.2.32.1).
See MS-SMB2 Section 2.2.31 for more details on format of fsctl.
Acked-by: Pavel Shilovsky <piastry@etersoft.ru>
Signed-off-by: Steve French <smfrench@gmail.com>
Diffstat (limited to 'fs/cifs/smb2misc.c')
-rw-r--r-- | fs/cifs/smb2misc.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/cifs/smb2misc.c b/fs/cifs/smb2misc.c index 10383d8c015b..b0c43345cd98 100644 --- a/fs/cifs/smb2misc.c +++ b/fs/cifs/smb2misc.c @@ -266,6 +266,10 @@ smb2_get_data_area_len(int *off, int *len, struct smb2_hdr *hdr) ((struct smb2_query_directory_rsp *)hdr)->OutputBufferLength); break; case SMB2_IOCTL: + *off = le32_to_cpu( + ((struct smb2_ioctl_rsp *)hdr)->OutputOffset); + *len = le32_to_cpu(((struct smb2_ioctl_rsp *)hdr)->OutputCount); + break; case SMB2_CHANGE_NOTIFY: default: /* BB FIXME for unimplemented cases above */ |