|
@@ -1218,7 +1218,7 @@ SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
|
|
struct smb2_ioctl_req *req;
|
|
|
struct smb2_ioctl_rsp *rsp;
|
|
|
struct TCP_Server_Info *server;
|
|
|
- struct cifs_ses *ses = tcon->ses;
|
|
|
+ struct cifs_ses *ses;
|
|
|
struct kvec iov[2];
|
|
|
int resp_buftype;
|
|
|
int num_iovecs;
|
|
@@ -1233,6 +1233,11 @@ SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
|
|
if (plen)
|
|
|
*plen = 0;
|
|
|
|
|
|
+ if (tcon)
|
|
|
+ ses = tcon->ses;
|
|
|
+ else
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
if (ses && (ses->server))
|
|
|
server = ses->server;
|
|
|
else
|
|
@@ -1296,14 +1301,12 @@ SMB2_ioctl(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
|
|
rsp = (struct smb2_ioctl_rsp *)iov[0].iov_base;
|
|
|
|
|
|
if ((rc != 0) && (rc != -EINVAL)) {
|
|
|
- if (tcon)
|
|
|
- cifs_stats_fail_inc(tcon, SMB2_IOCTL_HE);
|
|
|
+ cifs_stats_fail_inc(tcon, SMB2_IOCTL_HE);
|
|
|
goto ioctl_exit;
|
|
|
} else if (rc == -EINVAL) {
|
|
|
if ((opcode != FSCTL_SRV_COPYCHUNK_WRITE) &&
|
|
|
(opcode != FSCTL_SRV_COPYCHUNK)) {
|
|
|
- if (tcon)
|
|
|
- cifs_stats_fail_inc(tcon, SMB2_IOCTL_HE);
|
|
|
+ cifs_stats_fail_inc(tcon, SMB2_IOCTL_HE);
|
|
|
goto ioctl_exit;
|
|
|
}
|
|
|
}
|