cifs: remove useless parameter 'is_fsctl' from SMB2_ioctl()
[ Upstream commit 400d0ad63b190895e29f43bc75b1260111d3fd34 ] SMB2_ioctl() is always called with is_fsctl = true, so doesn't make any sense to have it at all. Thus, always set SMB2_0_IOCTL_IS_FSCTL flag on the request. Also, as per MS-SMB2 3.3.5.15 "Receiving an SMB2 IOCTL Request", servers must fail the request if the request flags is zero anyway. Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de> Reviewed-by: Tom Talpey <tom@talpey.com> Signed-off-by: Steve French <stfrench@microsoft.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
dee1e2b18c
commit
98127f140b
@@ -74,7 +74,6 @@ smb2_open_file(const unsigned int xid, struct cifs_open_parms *oparms,
|
|||||||
nr_ioctl_req.Reserved = 0;
|
nr_ioctl_req.Reserved = 0;
|
||||||
rc = SMB2_ioctl(xid, oparms->tcon, fid->persistent_fid,
|
rc = SMB2_ioctl(xid, oparms->tcon, fid->persistent_fid,
|
||||||
fid->volatile_fid, FSCTL_LMR_REQUEST_RESILIENCY,
|
fid->volatile_fid, FSCTL_LMR_REQUEST_RESILIENCY,
|
||||||
true /* is_fsctl */,
|
|
||||||
(char *)&nr_ioctl_req, sizeof(nr_ioctl_req),
|
(char *)&nr_ioctl_req, sizeof(nr_ioctl_req),
|
||||||
CIFSMaxBufSize, NULL, NULL /* no return info */);
|
CIFSMaxBufSize, NULL, NULL /* no return info */);
|
||||||
if (rc == -EOPNOTSUPP) {
|
if (rc == -EOPNOTSUPP) {
|
||||||
|
@@ -587,7 +587,7 @@ SMB3_request_interfaces(const unsigned int xid, struct cifs_tcon *tcon)
|
|||||||
struct cifs_ses *ses = tcon->ses;
|
struct cifs_ses *ses = tcon->ses;
|
||||||
|
|
||||||
rc = SMB2_ioctl(xid, tcon, NO_FILE_ID, NO_FILE_ID,
|
rc = SMB2_ioctl(xid, tcon, NO_FILE_ID, NO_FILE_ID,
|
||||||
FSCTL_QUERY_NETWORK_INTERFACE_INFO, true /* is_fsctl */,
|
FSCTL_QUERY_NETWORK_INTERFACE_INFO,
|
||||||
NULL /* no data input */, 0 /* no data input */,
|
NULL /* no data input */, 0 /* no data input */,
|
||||||
CIFSMaxBufSize, (char **)&out_buf, &ret_data_len);
|
CIFSMaxBufSize, (char **)&out_buf, &ret_data_len);
|
||||||
if (rc == -EOPNOTSUPP) {
|
if (rc == -EOPNOTSUPP) {
|
||||||
@@ -1470,9 +1470,8 @@ SMB2_request_res_key(const unsigned int xid, struct cifs_tcon *tcon,
|
|||||||
struct resume_key_req *res_key;
|
struct resume_key_req *res_key;
|
||||||
|
|
||||||
rc = SMB2_ioctl(xid, tcon, persistent_fid, volatile_fid,
|
rc = SMB2_ioctl(xid, tcon, persistent_fid, volatile_fid,
|
||||||
FSCTL_SRV_REQUEST_RESUME_KEY, true /* is_fsctl */,
|
FSCTL_SRV_REQUEST_RESUME_KEY, NULL, 0 /* no input */,
|
||||||
NULL, 0 /* no input */, CIFSMaxBufSize,
|
CIFSMaxBufSize, (char **)&res_key, &ret_data_len);
|
||||||
(char **)&res_key, &ret_data_len);
|
|
||||||
|
|
||||||
if (rc) {
|
if (rc) {
|
||||||
cifs_tcon_dbg(VFS, "refcpy ioctl error %d getting resume key\n", rc);
|
cifs_tcon_dbg(VFS, "refcpy ioctl error %d getting resume key\n", rc);
|
||||||
@@ -1611,7 +1610,7 @@ smb2_ioctl_query_info(const unsigned int xid,
|
|||||||
rqst[1].rq_nvec = SMB2_IOCTL_IOV_SIZE;
|
rqst[1].rq_nvec = SMB2_IOCTL_IOV_SIZE;
|
||||||
|
|
||||||
rc = SMB2_ioctl_init(tcon, server, &rqst[1], COMPOUND_FID, COMPOUND_FID,
|
rc = SMB2_ioctl_init(tcon, server, &rqst[1], COMPOUND_FID, COMPOUND_FID,
|
||||||
qi.info_type, true, buffer, qi.output_buffer_length,
|
qi.info_type, buffer, qi.output_buffer_length,
|
||||||
CIFSMaxBufSize - MAX_SMB2_CREATE_RESPONSE_SIZE -
|
CIFSMaxBufSize - MAX_SMB2_CREATE_RESPONSE_SIZE -
|
||||||
MAX_SMB2_CLOSE_RESPONSE_SIZE);
|
MAX_SMB2_CLOSE_RESPONSE_SIZE);
|
||||||
free_req1_func = SMB2_ioctl_free;
|
free_req1_func = SMB2_ioctl_free;
|
||||||
@@ -1787,9 +1786,8 @@ smb2_copychunk_range(const unsigned int xid,
|
|||||||
retbuf = NULL;
|
retbuf = NULL;
|
||||||
rc = SMB2_ioctl(xid, tcon, trgtfile->fid.persistent_fid,
|
rc = SMB2_ioctl(xid, tcon, trgtfile->fid.persistent_fid,
|
||||||
trgtfile->fid.volatile_fid, FSCTL_SRV_COPYCHUNK_WRITE,
|
trgtfile->fid.volatile_fid, FSCTL_SRV_COPYCHUNK_WRITE,
|
||||||
true /* is_fsctl */, (char *)pcchunk,
|
(char *)pcchunk, sizeof(struct copychunk_ioctl),
|
||||||
sizeof(struct copychunk_ioctl), CIFSMaxBufSize,
|
CIFSMaxBufSize, (char **)&retbuf, &ret_data_len);
|
||||||
(char **)&retbuf, &ret_data_len);
|
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
if (ret_data_len !=
|
if (ret_data_len !=
|
||||||
sizeof(struct copychunk_ioctl_rsp)) {
|
sizeof(struct copychunk_ioctl_rsp)) {
|
||||||
@@ -1949,7 +1947,6 @@ static bool smb2_set_sparse(const unsigned int xid, struct cifs_tcon *tcon,
|
|||||||
|
|
||||||
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
||||||
cfile->fid.volatile_fid, FSCTL_SET_SPARSE,
|
cfile->fid.volatile_fid, FSCTL_SET_SPARSE,
|
||||||
true /* is_fctl */,
|
|
||||||
&setsparse, 1, CIFSMaxBufSize, NULL, NULL);
|
&setsparse, 1, CIFSMaxBufSize, NULL, NULL);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
tcon->broken_sparse_sup = true;
|
tcon->broken_sparse_sup = true;
|
||||||
@@ -2032,7 +2029,6 @@ smb2_duplicate_extents(const unsigned int xid,
|
|||||||
rc = SMB2_ioctl(xid, tcon, trgtfile->fid.persistent_fid,
|
rc = SMB2_ioctl(xid, tcon, trgtfile->fid.persistent_fid,
|
||||||
trgtfile->fid.volatile_fid,
|
trgtfile->fid.volatile_fid,
|
||||||
FSCTL_DUPLICATE_EXTENTS_TO_FILE,
|
FSCTL_DUPLICATE_EXTENTS_TO_FILE,
|
||||||
true /* is_fsctl */,
|
|
||||||
(char *)&dup_ext_buf,
|
(char *)&dup_ext_buf,
|
||||||
sizeof(struct duplicate_extents_to_file),
|
sizeof(struct duplicate_extents_to_file),
|
||||||
CIFSMaxBufSize, NULL,
|
CIFSMaxBufSize, NULL,
|
||||||
@@ -2067,7 +2063,6 @@ smb3_set_integrity(const unsigned int xid, struct cifs_tcon *tcon,
|
|||||||
return SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
return SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
||||||
cfile->fid.volatile_fid,
|
cfile->fid.volatile_fid,
|
||||||
FSCTL_SET_INTEGRITY_INFORMATION,
|
FSCTL_SET_INTEGRITY_INFORMATION,
|
||||||
true /* is_fsctl */,
|
|
||||||
(char *)&integr_info,
|
(char *)&integr_info,
|
||||||
sizeof(struct fsctl_set_integrity_information_req),
|
sizeof(struct fsctl_set_integrity_information_req),
|
||||||
CIFSMaxBufSize, NULL,
|
CIFSMaxBufSize, NULL,
|
||||||
@@ -2120,7 +2115,6 @@ smb3_enum_snapshots(const unsigned int xid, struct cifs_tcon *tcon,
|
|||||||
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
||||||
cfile->fid.volatile_fid,
|
cfile->fid.volatile_fid,
|
||||||
FSCTL_SRV_ENUMERATE_SNAPSHOTS,
|
FSCTL_SRV_ENUMERATE_SNAPSHOTS,
|
||||||
true /* is_fsctl */,
|
|
||||||
NULL, 0 /* no input data */, max_response_size,
|
NULL, 0 /* no input data */, max_response_size,
|
||||||
(char **)&retbuf,
|
(char **)&retbuf,
|
||||||
&ret_data_len);
|
&ret_data_len);
|
||||||
@@ -2762,7 +2756,6 @@ smb2_get_dfs_refer(const unsigned int xid, struct cifs_ses *ses,
|
|||||||
do {
|
do {
|
||||||
rc = SMB2_ioctl(xid, tcon, NO_FILE_ID, NO_FILE_ID,
|
rc = SMB2_ioctl(xid, tcon, NO_FILE_ID, NO_FILE_ID,
|
||||||
FSCTL_DFS_GET_REFERRALS,
|
FSCTL_DFS_GET_REFERRALS,
|
||||||
true /* is_fsctl */,
|
|
||||||
(char *)dfs_req, dfs_req_size, CIFSMaxBufSize,
|
(char *)dfs_req, dfs_req_size, CIFSMaxBufSize,
|
||||||
(char **)&dfs_rsp, &dfs_rsp_size);
|
(char **)&dfs_rsp, &dfs_rsp_size);
|
||||||
} while (rc == -EAGAIN);
|
} while (rc == -EAGAIN);
|
||||||
@@ -2964,8 +2957,7 @@ smb2_query_symlink(const unsigned int xid, struct cifs_tcon *tcon,
|
|||||||
|
|
||||||
rc = SMB2_ioctl_init(tcon, server,
|
rc = SMB2_ioctl_init(tcon, server,
|
||||||
&rqst[1], fid.persistent_fid,
|
&rqst[1], fid.persistent_fid,
|
||||||
fid.volatile_fid, FSCTL_GET_REPARSE_POINT,
|
fid.volatile_fid, FSCTL_GET_REPARSE_POINT, NULL, 0,
|
||||||
true /* is_fctl */, NULL, 0,
|
|
||||||
CIFSMaxBufSize -
|
CIFSMaxBufSize -
|
||||||
MAX_SMB2_CREATE_RESPONSE_SIZE -
|
MAX_SMB2_CREATE_RESPONSE_SIZE -
|
||||||
MAX_SMB2_CLOSE_RESPONSE_SIZE);
|
MAX_SMB2_CLOSE_RESPONSE_SIZE);
|
||||||
@@ -3145,8 +3137,7 @@ smb2_query_reparse_tag(const unsigned int xid, struct cifs_tcon *tcon,
|
|||||||
|
|
||||||
rc = SMB2_ioctl_init(tcon, server,
|
rc = SMB2_ioctl_init(tcon, server,
|
||||||
&rqst[1], COMPOUND_FID,
|
&rqst[1], COMPOUND_FID,
|
||||||
COMPOUND_FID, FSCTL_GET_REPARSE_POINT,
|
COMPOUND_FID, FSCTL_GET_REPARSE_POINT, NULL, 0,
|
||||||
true /* is_fctl */, NULL, 0,
|
|
||||||
CIFSMaxBufSize -
|
CIFSMaxBufSize -
|
||||||
MAX_SMB2_CREATE_RESPONSE_SIZE -
|
MAX_SMB2_CREATE_RESPONSE_SIZE -
|
||||||
MAX_SMB2_CLOSE_RESPONSE_SIZE);
|
MAX_SMB2_CLOSE_RESPONSE_SIZE);
|
||||||
@@ -3409,7 +3400,7 @@ static long smb3_zero_range(struct file *file, struct cifs_tcon *tcon,
|
|||||||
fsctl_buf.BeyondFinalZero = cpu_to_le64(offset + len);
|
fsctl_buf.BeyondFinalZero = cpu_to_le64(offset + len);
|
||||||
|
|
||||||
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
||||||
cfile->fid.volatile_fid, FSCTL_SET_ZERO_DATA, true,
|
cfile->fid.volatile_fid, FSCTL_SET_ZERO_DATA,
|
||||||
(char *)&fsctl_buf,
|
(char *)&fsctl_buf,
|
||||||
sizeof(struct file_zero_data_information),
|
sizeof(struct file_zero_data_information),
|
||||||
0, NULL, NULL);
|
0, NULL, NULL);
|
||||||
@@ -3471,7 +3462,7 @@ static long smb3_punch_hole(struct file *file, struct cifs_tcon *tcon,
|
|||||||
|
|
||||||
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
||||||
cfile->fid.volatile_fid, FSCTL_SET_ZERO_DATA,
|
cfile->fid.volatile_fid, FSCTL_SET_ZERO_DATA,
|
||||||
true /* is_fctl */, (char *)&fsctl_buf,
|
(char *)&fsctl_buf,
|
||||||
sizeof(struct file_zero_data_information),
|
sizeof(struct file_zero_data_information),
|
||||||
CIFSMaxBufSize, NULL, NULL);
|
CIFSMaxBufSize, NULL, NULL);
|
||||||
free_xid(xid);
|
free_xid(xid);
|
||||||
@@ -3530,7 +3521,7 @@ static int smb3_simple_fallocate_range(unsigned int xid,
|
|||||||
in_data.length = cpu_to_le64(len);
|
in_data.length = cpu_to_le64(len);
|
||||||
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
||||||
cfile->fid.volatile_fid,
|
cfile->fid.volatile_fid,
|
||||||
FSCTL_QUERY_ALLOCATED_RANGES, true,
|
FSCTL_QUERY_ALLOCATED_RANGES,
|
||||||
(char *)&in_data, sizeof(in_data),
|
(char *)&in_data, sizeof(in_data),
|
||||||
1024 * sizeof(struct file_allocated_range_buffer),
|
1024 * sizeof(struct file_allocated_range_buffer),
|
||||||
(char **)&out_data, &out_data_len);
|
(char **)&out_data, &out_data_len);
|
||||||
@@ -3771,7 +3762,7 @@ static loff_t smb3_llseek(struct file *file, struct cifs_tcon *tcon, loff_t offs
|
|||||||
|
|
||||||
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
||||||
cfile->fid.volatile_fid,
|
cfile->fid.volatile_fid,
|
||||||
FSCTL_QUERY_ALLOCATED_RANGES, true,
|
FSCTL_QUERY_ALLOCATED_RANGES,
|
||||||
(char *)&in_data, sizeof(in_data),
|
(char *)&in_data, sizeof(in_data),
|
||||||
sizeof(struct file_allocated_range_buffer),
|
sizeof(struct file_allocated_range_buffer),
|
||||||
(char **)&out_data, &out_data_len);
|
(char **)&out_data, &out_data_len);
|
||||||
@@ -3831,7 +3822,7 @@ static int smb3_fiemap(struct cifs_tcon *tcon,
|
|||||||
|
|
||||||
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
rc = SMB2_ioctl(xid, tcon, cfile->fid.persistent_fid,
|
||||||
cfile->fid.volatile_fid,
|
cfile->fid.volatile_fid,
|
||||||
FSCTL_QUERY_ALLOCATED_RANGES, true,
|
FSCTL_QUERY_ALLOCATED_RANGES,
|
||||||
(char *)&in_data, sizeof(in_data),
|
(char *)&in_data, sizeof(in_data),
|
||||||
1024 * sizeof(struct file_allocated_range_buffer),
|
1024 * sizeof(struct file_allocated_range_buffer),
|
||||||
(char **)&out_data, &out_data_len);
|
(char **)&out_data, &out_data_len);
|
||||||
|
@@ -1081,7 +1081,7 @@ int smb3_validate_negotiate(const unsigned int xid, struct cifs_tcon *tcon)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rc = SMB2_ioctl(xid, tcon, NO_FILE_ID, NO_FILE_ID,
|
rc = SMB2_ioctl(xid, tcon, NO_FILE_ID, NO_FILE_ID,
|
||||||
FSCTL_VALIDATE_NEGOTIATE_INFO, true /* is_fsctl */,
|
FSCTL_VALIDATE_NEGOTIATE_INFO,
|
||||||
(char *)pneg_inbuf, inbuflen, CIFSMaxBufSize,
|
(char *)pneg_inbuf, inbuflen, CIFSMaxBufSize,
|
||||||
(char **)&pneg_rsp, &rsplen);
|
(char **)&pneg_rsp, &rsplen);
|
||||||
if (rc == -EOPNOTSUPP) {
|
if (rc == -EOPNOTSUPP) {
|
||||||
@@ -2922,7 +2922,7 @@ int
|
|||||||
SMB2_ioctl_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
|
SMB2_ioctl_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
|
||||||
struct smb_rqst *rqst,
|
struct smb_rqst *rqst,
|
||||||
u64 persistent_fid, u64 volatile_fid, u32 opcode,
|
u64 persistent_fid, u64 volatile_fid, u32 opcode,
|
||||||
bool is_fsctl, char *in_data, u32 indatalen,
|
char *in_data, u32 indatalen,
|
||||||
__u32 max_response_size)
|
__u32 max_response_size)
|
||||||
{
|
{
|
||||||
struct smb2_ioctl_req *req;
|
struct smb2_ioctl_req *req;
|
||||||
@@ -2997,10 +2997,8 @@ SMB2_ioctl_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
|
|||||||
req->sync_hdr.CreditCharge =
|
req->sync_hdr.CreditCharge =
|
||||||
cpu_to_le16(DIV_ROUND_UP(max(indatalen, max_response_size),
|
cpu_to_le16(DIV_ROUND_UP(max(indatalen, max_response_size),
|
||||||
SMB2_MAX_BUFFER_SIZE));
|
SMB2_MAX_BUFFER_SIZE));
|
||||||
if (is_fsctl)
|
/* always an FSCTL (for now) */
|
||||||
req->Flags = cpu_to_le32(SMB2_0_IOCTL_IS_FSCTL);
|
req->Flags = cpu_to_le32(SMB2_0_IOCTL_IS_FSCTL);
|
||||||
else
|
|
||||||
req->Flags = 0;
|
|
||||||
|
|
||||||
/* validate negotiate request must be signed - see MS-SMB2 3.2.5.5 */
|
/* validate negotiate request must be signed - see MS-SMB2 3.2.5.5 */
|
||||||
if (opcode == FSCTL_VALIDATE_NEGOTIATE_INFO)
|
if (opcode == FSCTL_VALIDATE_NEGOTIATE_INFO)
|
||||||
@@ -3027,9 +3025,9 @@ SMB2_ioctl_free(struct smb_rqst *rqst)
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
||||||
u64 volatile_fid, u32 opcode, bool is_fsctl,
|
u64 volatile_fid, u32 opcode, char *in_data, u32 indatalen,
|
||||||
char *in_data, u32 indatalen, u32 max_out_data_len,
|
u32 max_out_data_len, char **out_data,
|
||||||
char **out_data, u32 *plen /* returned data len */)
|
u32 *plen /* returned data len */)
|
||||||
{
|
{
|
||||||
struct smb_rqst rqst;
|
struct smb_rqst rqst;
|
||||||
struct smb2_ioctl_rsp *rsp = NULL;
|
struct smb2_ioctl_rsp *rsp = NULL;
|
||||||
@@ -3071,7 +3069,7 @@ SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
|||||||
|
|
||||||
rc = SMB2_ioctl_init(tcon, server,
|
rc = SMB2_ioctl_init(tcon, server,
|
||||||
&rqst, persistent_fid, volatile_fid, opcode,
|
&rqst, persistent_fid, volatile_fid, opcode,
|
||||||
is_fsctl, in_data, indatalen, max_out_data_len);
|
in_data, indatalen, max_out_data_len);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto ioctl_exit;
|
goto ioctl_exit;
|
||||||
|
|
||||||
@@ -3153,7 +3151,7 @@ SMB2_set_compression(const unsigned int xid, struct cifs_tcon *tcon,
|
|||||||
cpu_to_le16(COMPRESSION_FORMAT_DEFAULT);
|
cpu_to_le16(COMPRESSION_FORMAT_DEFAULT);
|
||||||
|
|
||||||
rc = SMB2_ioctl(xid, tcon, persistent_fid, volatile_fid,
|
rc = SMB2_ioctl(xid, tcon, persistent_fid, volatile_fid,
|
||||||
FSCTL_SET_COMPRESSION, true /* is_fsctl */,
|
FSCTL_SET_COMPRESSION,
|
||||||
(char *)&fsctl_input /* data input */,
|
(char *)&fsctl_input /* data input */,
|
||||||
2 /* in data len */, CIFSMaxBufSize /* max out data */,
|
2 /* in data len */, CIFSMaxBufSize /* max out data */,
|
||||||
&ret_data /* out data */, NULL);
|
&ret_data /* out data */, NULL);
|
||||||
|
@@ -155,13 +155,13 @@ extern int SMB2_open_init(struct cifs_tcon *tcon,
|
|||||||
extern void SMB2_open_free(struct smb_rqst *rqst);
|
extern void SMB2_open_free(struct smb_rqst *rqst);
|
||||||
extern int SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon,
|
extern int SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon,
|
||||||
u64 persistent_fid, u64 volatile_fid, u32 opcode,
|
u64 persistent_fid, u64 volatile_fid, u32 opcode,
|
||||||
bool is_fsctl, char *in_data, u32 indatalen, u32 maxoutlen,
|
char *in_data, u32 indatalen, u32 maxoutlen,
|
||||||
char **out_data, u32 *plen /* returned data len */);
|
char **out_data, u32 *plen /* returned data len */);
|
||||||
extern int SMB2_ioctl_init(struct cifs_tcon *tcon,
|
extern int SMB2_ioctl_init(struct cifs_tcon *tcon,
|
||||||
struct TCP_Server_Info *server,
|
struct TCP_Server_Info *server,
|
||||||
struct smb_rqst *rqst,
|
struct smb_rqst *rqst,
|
||||||
u64 persistent_fid, u64 volatile_fid, u32 opcode,
|
u64 persistent_fid, u64 volatile_fid, u32 opcode,
|
||||||
bool is_fsctl, char *in_data, u32 indatalen,
|
char *in_data, u32 indatalen,
|
||||||
__u32 max_response_size);
|
__u32 max_response_size);
|
||||||
extern void SMB2_ioctl_free(struct smb_rqst *rqst);
|
extern void SMB2_ioctl_free(struct smb_rqst *rqst);
|
||||||
extern int SMB2_change_notify(const unsigned int xid, struct cifs_tcon *tcon,
|
extern int SMB2_change_notify(const unsigned int xid, struct cifs_tcon *tcon,
|
||||||
|
Reference in New Issue
Block a user