summaryrefslogtreecommitdiffstats
path: root/fs/cifs/connect.c
diff options
context:
space:
mode:
authorShirish Pargaonkar <shirishpargaonkar@gmail.com>2013-08-29 09:35:09 -0400
committerSteve French <smfrench@gmail.com>2013-09-08 15:47:47 -0400
commitd4e63bd6e40da30e965e8947b98ba75c6b973c62 (patch)
tree4f17bdbe75843ac578a9a9e1ee491192dd280d73 /fs/cifs/connect.c
parent31f92e9a87553d9d3044fe97b5fe0247e4314773 (diff)
cifs: Process post session setup code in respective dialect functions.
Move the post (successful) session setup code to respective dialect routines. For smb1, session key is per smb connection. For smb2/smb3, session key is per smb session. If client and server do not require signing, free session key for smb1/2/3. If client and server require signing smb1 - Copy (kmemdup) session key for the first session to connection. Free session key of that and subsequent sessions on this connection. smb2 - For every session, keep the session key and free it when the session is being shutdown. smb3 - For every session, generate the smb3 signing key using the session key and then free the session key. There are two unrelated line formatting changes as well. Reviewed-by: Jeff Layton <jlayton@samba.org> Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com> Signed-off-by: Steve French <smfrench@gmail.com>
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r--fs/cifs/connect.c27
1 files changed, 1 insertions, 26 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index b1bab99be83b..688f48ec9abc 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -3828,33 +3828,8 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses,
3828 if (server->ops->sess_setup) 3828 if (server->ops->sess_setup)
3829 rc = server->ops->sess_setup(xid, ses, nls_info); 3829 rc = server->ops->sess_setup(xid, ses, nls_info);
3830 3830
3831 if (rc) { 3831 if (rc)
3832 cifs_dbg(VFS, "Send error in SessSetup = %d\n", rc); 3832 cifs_dbg(VFS, "Send error in SessSetup = %d\n", rc);
3833 } else {
3834 mutex_lock(&server->srv_mutex);
3835 if (!server->session_estab) {
3836 server->session_key.response = ses->auth_key.response;
3837 server->session_key.len = ses->auth_key.len;
3838 server->sequence_number = 0x2;
3839 server->session_estab = true;
3840 ses->auth_key.response = NULL;
3841 if (server->ops->generate_signingkey)
3842 server->ops->generate_signingkey(server);
3843 }
3844 mutex_unlock(&server->srv_mutex);
3845
3846 cifs_dbg(FYI, "CIFS Session Established successfully\n");
3847 spin_lock(&GlobalMid_Lock);
3848 ses->status = CifsGood;
3849 ses->need_reconnect = false;
3850 spin_unlock(&GlobalMid_Lock);
3851 }
3852
3853 kfree(ses->auth_key.response);
3854 ses->auth_key.response = NULL;
3855 ses->auth_key.len = 0;
3856 kfree(ses->ntlmssp);
3857 ses->ntlmssp = NULL;
3858 3833
3859 return rc; 3834 return rc;
3860} 3835}