Skip to content

Commit f7025d8

Browse files
ematsumiyaSteve French
authored and
Steve French
committed
smb: client: allocate crypto only for primary server
For extra channels, point ->secmech.{enc,dec} to the primary server ones. Signed-off-by: Enzo Matsumiya <[email protected]> Signed-off-by: Steve French <[email protected]>
1 parent b0abcd6 commit f7025d8

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

fs/smb/client/cifsencrypt.c

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -735,13 +735,18 @@ cifs_crypto_secmech_release(struct TCP_Server_Info *server)
735735
cifs_free_hash(&server->secmech.sha512);
736736
cifs_free_hash(&server->secmech.hmacmd5);
737737

738-
if (server->secmech.enc) {
739-
crypto_free_aead(server->secmech.enc);
740-
server->secmech.enc = NULL;
741-
}
738+
if (!SERVER_IS_CHAN(server)) {
739+
if (server->secmech.enc) {
740+
crypto_free_aead(server->secmech.enc);
741+
server->secmech.enc = NULL;
742+
}
742743

743-
if (server->secmech.dec) {
744-
crypto_free_aead(server->secmech.dec);
744+
if (server->secmech.dec) {
745+
crypto_free_aead(server->secmech.dec);
746+
server->secmech.dec = NULL;
747+
}
748+
} else {
749+
server->secmech.enc = NULL;
745750
server->secmech.dec = NULL;
746751
}
747752
}

fs/smb/client/smb2pdu.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1268,9 +1268,13 @@ SMB2_negotiate(const unsigned int xid,
12681268
}
12691269

12701270
if (server->cipher_type && !rc) {
1271-
rc = smb3_crypto_aead_allocate(server);
1272-
if (rc)
1273-
cifs_server_dbg(VFS, "%s: crypto alloc failed, rc=%d\n", __func__, rc);
1271+
if (!SERVER_IS_CHAN(server)) {
1272+
rc = smb3_crypto_aead_allocate(server);
1273+
} else {
1274+
/* For channels, just reuse the primary server crypto secmech. */
1275+
server->secmech.enc = server->primary_server->secmech.enc;
1276+
server->secmech.dec = server->primary_server->secmech.dec;
1277+
}
12741278
}
12751279
neg_exit:
12761280
free_rsp_buf(resp_buftype, rsp);

0 commit comments

Comments
 (0)