cifs: do not send tree disconnect to ipc shares
[linux-2.6-microblaze.git] / fs / cifs / connect.c
index 495c395..ecac8ca 100644 (file)
@@ -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 *