cifs: update tcpStatus during negotiate and sess setup
authorShyam Prasad N <sprasad@microsoft.com>
Tue, 18 Jan 2022 09:24:08 +0000 (09:24 +0000)
committerSteve French <stfrench@microsoft.com>
Wed, 19 Jan 2022 17:10:55 +0000 (11:10 -0600)
Till the end of SMB session setup, update tcpStatus and
avoid updating session status field. There was a typo in
cifs_setup_session, which caused ses->status to be updated
instead. This was causing issues during reconnect.

Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/connect.c

index 0a35503..bcba332 100644 (file)
@@ -3908,7 +3908,7 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses,
                spin_unlock(&cifs_tcp_ses_lock);
                return 0;
        }
-       ses->status = CifsInSessSetup;
+       server->tcpStatus = CifsInSessSetup;
        spin_unlock(&cifs_tcp_ses_lock);
 
        spin_lock(&ses->chan_lock);
@@ -3946,8 +3946,7 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses,
                if (server->tcpStatus == CifsInSessSetup)
                        server->tcpStatus = CifsGood;
                /* Even if one channel is active, session is in good state */
-               if (ses->status == CifsInSessSetup)
-                       ses->status = CifsGood;
+               ses->status = CifsGood;
                spin_unlock(&cifs_tcp_ses_lock);
 
                spin_lock(&ses->chan_lock);