mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 05:04:09 +08:00
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>
This commit is contained in:
parent
966a3cb7c7
commit
f3191fc800
@ -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 *
|
||||
|
Loading…
Reference in New Issue
Block a user