mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 21:54:11 +08:00
cifs: do not negotiate session if session already exists
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>
This commit is contained in:
parent
02102744d3
commit
8e07757bec
@ -1943,16 +1943,18 @@ cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx)
|
|||||||
ses->status);
|
ses->status);
|
||||||
|
|
||||||
mutex_lock(&ses->session_mutex);
|
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) {
|
if (ses->need_reconnect) {
|
||||||
cifs_dbg(FYI, "Session needs reconnect\n");
|
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,
|
rc = cifs_setup_session(xid, ses,
|
||||||
ctx->local_nls);
|
ctx->local_nls);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
|
Loading…
Reference in New Issue
Block a user