diff options
author | Shirish Pargaonkar <shirishpargaonkar@gmail.com> | 2013-08-29 09:35:09 -0400 |
---|---|---|
committer | Steve French <smfrench@gmail.com> | 2013-09-08 15:47:47 -0400 |
commit | d4e63bd6e40da30e965e8947b98ba75c6b973c62 (patch) | |
tree | 4f17bdbe75843ac578a9a9e1ee491192dd280d73 /fs/cifs/connect.c | |
parent | 31f92e9a87553d9d3044fe97b5fe0247e4314773 (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.c | 27 |
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 | } |