@@ -121,8 +121,8 @@ static int ksmbd_gen_sess_key(struct ksmbd_session *sess, char *hash,
121121 return rc ;
122122}
123123
124- static int calc_ntlmv2_hash (struct ksmbd_session * sess , char * ntlmv2_hash ,
125- char * dname )
124+ static int calc_ntlmv2_hash (struct ksmbd_conn * conn , struct ksmbd_session * sess ,
125+ char * ntlmv2_hash , char * dname )
126126{
127127 int ret , len , conv_len ;
128128 wchar_t * domain = NULL ;
@@ -158,7 +158,7 @@ static int calc_ntlmv2_hash(struct ksmbd_session *sess, char *ntlmv2_hash,
158158 }
159159
160160 conv_len = smb_strtoUTF16 (uniname , user_name (sess -> user ), len ,
161- sess -> conn -> local_nls );
161+ conn -> local_nls );
162162 if (conv_len < 0 || conv_len > len ) {
163163 ret = - EINVAL ;
164164 goto out ;
@@ -182,7 +182,7 @@ static int calc_ntlmv2_hash(struct ksmbd_session *sess, char *ntlmv2_hash,
182182 }
183183
184184 conv_len = smb_strtoUTF16 ((__le16 * )domain , dname , len ,
185- sess -> conn -> local_nls );
185+ conn -> local_nls );
186186 if (conv_len < 0 || conv_len > len ) {
187187 ret = - EINVAL ;
188188 goto out ;
@@ -215,8 +215,9 @@ static int calc_ntlmv2_hash(struct ksmbd_session *sess, char *ntlmv2_hash,
215215 *
216216 * Return: 0 on success, error number on error
217217 */
218- int ksmbd_auth_ntlmv2 (struct ksmbd_session * sess , struct ntlmv2_resp * ntlmv2 ,
219- int blen , char * domain_name , char * cryptkey )
218+ int ksmbd_auth_ntlmv2 (struct ksmbd_conn * conn , struct ksmbd_session * sess ,
219+ struct ntlmv2_resp * ntlmv2 , int blen , char * domain_name ,
220+ char * cryptkey )
220221{
221222 char ntlmv2_hash [CIFS_ENCPWD_SIZE ];
222223 char ntlmv2_rsp [CIFS_HMAC_MD5_HASH_SIZE ];
@@ -230,7 +231,7 @@ int ksmbd_auth_ntlmv2(struct ksmbd_session *sess, struct ntlmv2_resp *ntlmv2,
230231 return - ENOMEM ;
231232 }
232233
233- rc = calc_ntlmv2_hash (sess , ntlmv2_hash , domain_name );
234+ rc = calc_ntlmv2_hash (conn , sess , ntlmv2_hash , domain_name );
234235 if (rc ) {
235236 ksmbd_debug (AUTH , "could not get v2 hash rc %d\n" , rc );
236237 goto out ;
@@ -333,7 +334,8 @@ int ksmbd_decode_ntlmssp_auth_blob(struct authenticate_message *authblob,
333334 /* process NTLMv2 authentication */
334335 ksmbd_debug (AUTH , "decode_ntlmssp_authenticate_blob dname%s\n" ,
335336 domain_name );
336- ret = ksmbd_auth_ntlmv2 (sess , (struct ntlmv2_resp * )((char * )authblob + nt_off ),
337+ ret = ksmbd_auth_ntlmv2 (conn , sess ,
338+ (struct ntlmv2_resp * )((char * )authblob + nt_off ),
337339 nt_len - CIFS_ENCPWD_SIZE ,
338340 domain_name , conn -> ntlmssp .cryptkey );
339341 kfree (domain_name );
@@ -659,8 +661,9 @@ struct derivation {
659661 bool binding ;
660662};
661663
662- static int generate_key (struct ksmbd_session * sess , struct kvec label ,
663- struct kvec context , __u8 * key , unsigned int key_size )
664+ static int generate_key (struct ksmbd_conn * conn , struct ksmbd_session * sess ,
665+ struct kvec label , struct kvec context , __u8 * key ,
666+ unsigned int key_size )
664667{
665668 unsigned char zero = 0x0 ;
666669 __u8 i [4 ] = {0 , 0 , 0 , 1 };
@@ -720,8 +723,8 @@ static int generate_key(struct ksmbd_session *sess, struct kvec label,
720723 goto smb3signkey_ret ;
721724 }
722725
723- if (sess -> conn -> cipher_type == SMB2_ENCRYPTION_AES256_CCM ||
724- sess -> conn -> cipher_type == SMB2_ENCRYPTION_AES256_GCM )
726+ if (conn -> cipher_type == SMB2_ENCRYPTION_AES256_CCM ||
727+ conn -> cipher_type == SMB2_ENCRYPTION_AES256_GCM )
725728 rc = crypto_shash_update (CRYPTO_HMACSHA256 (ctx ), L256 , 4 );
726729 else
727730 rc = crypto_shash_update (CRYPTO_HMACSHA256 (ctx ), L128 , 4 );
@@ -756,17 +759,17 @@ static int generate_smb3signingkey(struct ksmbd_session *sess,
756759 if (!chann )
757760 return 0 ;
758761
759- if (sess -> conn -> dialect >= SMB30_PROT_ID && signing -> binding )
762+ if (conn -> dialect >= SMB30_PROT_ID && signing -> binding )
760763 key = chann -> smb3signingkey ;
761764 else
762765 key = sess -> smb3signingkey ;
763766
764- rc = generate_key (sess , signing -> label , signing -> context , key ,
767+ rc = generate_key (conn , sess , signing -> label , signing -> context , key ,
765768 SMB3_SIGN_KEY_SIZE );
766769 if (rc )
767770 return rc ;
768771
769- if (!(sess -> conn -> dialect >= SMB30_PROT_ID && signing -> binding ))
772+ if (!(conn -> dialect >= SMB30_PROT_ID && signing -> binding ))
770773 memcpy (chann -> smb3signingkey , key , SMB3_SIGN_KEY_SIZE );
771774
772775 ksmbd_debug (AUTH , "dumping generated AES signing keys\n" );
@@ -820,30 +823,31 @@ struct derivation_twin {
820823 struct derivation decryption ;
821824};
822825
823- static int generate_smb3encryptionkey (struct ksmbd_session * sess ,
826+ static int generate_smb3encryptionkey (struct ksmbd_conn * conn ,
827+ struct ksmbd_session * sess ,
824828 const struct derivation_twin * ptwin )
825829{
826830 int rc ;
827831
828- rc = generate_key (sess , ptwin -> encryption .label ,
832+ rc = generate_key (conn , sess , ptwin -> encryption .label ,
829833 ptwin -> encryption .context , sess -> smb3encryptionkey ,
830834 SMB3_ENC_DEC_KEY_SIZE );
831835 if (rc )
832836 return rc ;
833837
834- rc = generate_key (sess , ptwin -> decryption .label ,
838+ rc = generate_key (conn , sess , ptwin -> decryption .label ,
835839 ptwin -> decryption .context ,
836840 sess -> smb3decryptionkey , SMB3_ENC_DEC_KEY_SIZE );
837841 if (rc )
838842 return rc ;
839843
840844 ksmbd_debug (AUTH , "dumping generated AES encryption keys\n" );
841- ksmbd_debug (AUTH , "Cipher type %d\n" , sess -> conn -> cipher_type );
845+ ksmbd_debug (AUTH , "Cipher type %d\n" , conn -> cipher_type );
842846 ksmbd_debug (AUTH , "Session Id %llu\n" , sess -> id );
843847 ksmbd_debug (AUTH , "Session Key %*ph\n" ,
844848 SMB2_NTLMV2_SESSKEY_SIZE , sess -> sess_key );
845- if (sess -> conn -> cipher_type == SMB2_ENCRYPTION_AES256_CCM ||
846- sess -> conn -> cipher_type == SMB2_ENCRYPTION_AES256_GCM ) {
849+ if (conn -> cipher_type == SMB2_ENCRYPTION_AES256_CCM ||
850+ conn -> cipher_type == SMB2_ENCRYPTION_AES256_GCM ) {
847851 ksmbd_debug (AUTH , "ServerIn Key %*ph\n" ,
848852 SMB3_GCM256_CRYPTKEY_SIZE , sess -> smb3encryptionkey );
849853 ksmbd_debug (AUTH , "ServerOut Key %*ph\n" ,
@@ -857,7 +861,8 @@ static int generate_smb3encryptionkey(struct ksmbd_session *sess,
857861 return 0 ;
858862}
859863
860- int ksmbd_gen_smb30_encryptionkey (struct ksmbd_session * sess )
864+ int ksmbd_gen_smb30_encryptionkey (struct ksmbd_conn * conn ,
865+ struct ksmbd_session * sess )
861866{
862867 struct derivation_twin twin ;
863868 struct derivation * d ;
@@ -874,10 +879,11 @@ int ksmbd_gen_smb30_encryptionkey(struct ksmbd_session *sess)
874879 d -> context .iov_base = "ServerIn " ;
875880 d -> context .iov_len = 10 ;
876881
877- return generate_smb3encryptionkey (sess , & twin );
882+ return generate_smb3encryptionkey (conn , sess , & twin );
878883}
879884
880- int ksmbd_gen_smb311_encryptionkey (struct ksmbd_session * sess )
885+ int ksmbd_gen_smb311_encryptionkey (struct ksmbd_conn * conn ,
886+ struct ksmbd_session * sess )
881887{
882888 struct derivation_twin twin ;
883889 struct derivation * d ;
@@ -894,7 +900,7 @@ int ksmbd_gen_smb311_encryptionkey(struct ksmbd_session *sess)
894900 d -> context .iov_base = sess -> Preauth_HashValue ;
895901 d -> context .iov_len = 64 ;
896902
897- return generate_smb3encryptionkey (sess , & twin );
903+ return generate_smb3encryptionkey (conn , sess , & twin );
898904}
899905
900906int ksmbd_gen_preauth_integrity_hash (struct ksmbd_conn * conn , char * buf ,
0 commit comments