X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=fs%2Fcifs%2Fconnect.c;h=ecac8cab758181c515fd55c797bd773dd6e851fa;hb=f3191fc8004d6d200d850395bbad8dab8f367945;hp=495c395f9defd01dfca7277d5d1999443e693337;hpb=85ebe5aeef9b0bf4c91ff91652b32f9c54f71d34;p=linux-2.6-microblaze.git 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 *