In cifs_get_smb_ses, if we find an existing matching session,
we should not send a negotiate request for the session if a
session reconnect is not necessary.
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: Steve French <stfrench@microsoft.com>
                         ses->status);
 
                mutex_lock(&ses->session_mutex);
-               rc = cifs_negotiate_protocol(xid, ses);
-               if (rc) {
-                       mutex_unlock(&ses->session_mutex);
-                       /* problem -- put our ses reference */
-                       cifs_put_smb_ses(ses);
-                       free_xid(xid);
-                       return ERR_PTR(rc);
-               }
                if (ses->need_reconnect) {
                        cifs_dbg(FYI, "Session needs reconnect\n");
+
+                       rc = cifs_negotiate_protocol(xid, ses);
+                       if (rc) {
+                               mutex_unlock(&ses->session_mutex);
+                               /* problem -- put our ses reference */
+                               cifs_put_smb_ses(ses);
+                               free_xid(xid);
+                               return ERR_PTR(rc);
+                       }
+
                        rc = cifs_setup_session(xid, ses,
                                                ctx->local_nls);
                        if (rc) {