Blob Blame History Raw
From: Shyam Prasad N <sprasad@microsoft.com>
Date: Tue, 18 Jan 2022 09:24:08 +0000
Subject: [PATCH] cifs: update tcpStatus during negotiate and sess setup
Git-commit: 47de760655f329ce4b3d3e6276557220956d8c38
References: bsc#1193629
Patch-mainline: v5.17-rc1

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>
Acked-by: Enzo Matsumiya <ematsumiya@suse.de>
---
 fs/cifs/connect.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 0a35503b7b46..bcba3324cb4b 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -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);
-- 
2.36.1