diff options
author | Paulo Alcantara <pc@cjr.nz> | 2021-06-05 01:25:27 +0300 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2021-06-21 05:28:16 +0300 |
commit | f3191fc8004d6d200d850395bbad8dab8f367945 (patch) | |
tree | 08bb7a1d2da2a9acb58e0e4a376ac76291e74131 /fs/cifs/connect.c | |
parent | 966a3cb7c7db786452a87afdc3b48858fc4d4d6b (diff) | |
download | linux-f3191fc8004d6d200d850395bbad8dab8f367945.tar.xz |
cifs: do not send tree disconnect to ipc shares
On session close, the IPC is closed and the server must release all
tcons of the session. It doesn't matter if we send a ipc close or
not.
Besides, it will make the server to not close durable and resilient
files on session close, as specified in MS-SMB2 3.3.5.6 Receiving an
SMB2 LOGOFF Request.
Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r-- | fs/cifs/connect.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 495c395f9def..ecac8cab7581 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -1557,29 +1557,25 @@ out: /** * cifs_free_ipc - helper to release the session IPC tcon * - * Needs to be called everytime a session is destroyed + * Needs to be called everytime a session is destroyed. + * + * On session close, the IPC is closed and the server must release all tcons of the session. + * No need to send a tree disconnect here. + * + * Besides, it will make the server to not close durable and resilient files on session close, as + * specified in MS-SMB2 3.3.5.6 Receiving an SMB2 LOGOFF Request. */ static int cifs_free_ipc(struct cifs_ses *ses) { - int rc = 0, xid; struct cifs_tcon *tcon = ses->tcon_ipc; if (tcon == NULL) return 0; - if (ses->server->ops->tree_disconnect) { - xid = get_xid(); - rc = ses->server->ops->tree_disconnect(xid, tcon); - free_xid(xid); - } - - if (rc) - cifs_dbg(FYI, "failed to disconnect IPC tcon (rc=%d)\n", rc); - tconInfoFree(tcon); ses->tcon_ipc = NULL; - return rc; + return 0; } static struct cifs_ses * |