diff options
author | Pavel Shilovsky <pshilov@microsoft.com> | 2017-07-08 23:32:00 +0200 |
---|---|---|
committer | Steve French <smfrench@gmail.com> | 2017-07-09 00:23:10 +0200 |
commit | 511c54a2f69195b28afb9dd119f03787b1625bb4 (patch) | |
tree | 62ddef834e4a5b9298f662446dc49814c088756c /fs/cifs/cifsglob.h | |
parent | CIFS: Display SMB2 error codes in the hex format (diff) | |
download | linux-511c54a2f69195b28afb9dd119f03787b1625bb4.tar.xz linux-511c54a2f69195b28afb9dd119f03787b1625bb4.zip |
CIFS: Reconnect expired SMB sessions
According to the MS-SMB2 spec (3.2.5.1.6) once the client receives
STATUS_NETWORK_SESSION_EXPIRED error code from a server it should
reconnect the current SMB session. Currently the client doesn't do
that. This can result in subsequent client requests failing by
the server. The patch adds an additional logic to the demultiplex
thread to identify expired sessions and reconnect them.
Cc: <stable@vger.kernel.org>
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <smfrench@gmail.com>
Diffstat (limited to 'fs/cifs/cifsglob.h')
-rw-r--r-- | fs/cifs/cifsglob.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index bcc7d9acad64..fb482515a64b 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -367,6 +367,8 @@ struct smb_version_operations { unsigned int (*calc_smb_size)(void *); /* check for STATUS_PENDING and process it in a positive case */ bool (*is_status_pending)(char *, struct TCP_Server_Info *, int); + /* check for STATUS_NETWORK_SESSION_EXPIRED */ + bool (*is_session_expired)(char *); /* send oplock break response */ int (*oplock_response)(struct cifs_tcon *, struct cifs_fid *, struct cifsInodeInfo *); |