Commit 2883f4b5 authored by Shyam Prasad N's avatar Shyam Prasad N Committed by Steve French

cifs: remove unnecessary locking of chan_lock while freeing session

In cifs_put_smb_ses, when we're freeing the last ref count to
the session, we need to free up each channel. At this point,
it is unnecessary to take chan_lock, since we have the last
reference to the ses.

Picking up this lock also introduced a deadlock because it calls
cifs_put_tcp_ses, which locks cifs_tcp_ses_lock.
Signed-off-by: default avatarShyam Prasad N <sprasad@microsoft.com>
Acked-by: default avatarEnzo Matsumiya <ematsumiya@suse.de>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 50bd7d5a
...@@ -1918,7 +1918,6 @@ void cifs_put_smb_ses(struct cifs_ses *ses) ...@@ -1918,7 +1918,6 @@ void cifs_put_smb_ses(struct cifs_ses *ses)
list_del_init(&ses->smb_ses_list); list_del_init(&ses->smb_ses_list);
spin_unlock(&cifs_tcp_ses_lock); spin_unlock(&cifs_tcp_ses_lock);
spin_lock(&ses->chan_lock);
chan_count = ses->chan_count; chan_count = ses->chan_count;
/* close any extra channels */ /* close any extra channels */
...@@ -1934,7 +1933,6 @@ void cifs_put_smb_ses(struct cifs_ses *ses) ...@@ -1934,7 +1933,6 @@ void cifs_put_smb_ses(struct cifs_ses *ses)
ses->chans[i].server = NULL; ses->chans[i].server = NULL;
} }
} }
spin_unlock(&ses->chan_lock);
sesInfoFree(ses); sesInfoFree(ses);
cifs_put_tcp_session(server, 0); cifs_put_tcp_session(server, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment