Re: [PATCH 11/15] smb: client: Drop 'allocate_crypto' arg from smb*_calc_signature()
From: Steve French
Date: Wed Feb 18 2026 - 16:46:01 EST
Acked-by: Steve French <stfrench@xxxxxxxxxxxxx>
On Wed, Feb 18, 2026 at 3:38 PM Eric Biggers <ebiggers@xxxxxxxxxx> wrote:
>
> Since the crypto library API is now being used instead of crypto_shash,
> all structs for MAC computation are now just fixed-size structs
> allocated on the stack; no dynamic allocations are ever required.
> Besides being much more efficient, this also means that the
> 'allocate_crypto' argument to smb2_calc_signature() and
> smb3_calc_signature() is no longer used. Remove this unused argument.
>
> Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
> ---
> fs/smb/client/smb2transport.c | 12 +++++-------
> 1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/fs/smb/client/smb2transport.c b/fs/smb/client/smb2transport.c
> index 0176185a1efc..41009039b4cb 100644
> --- a/fs/smb/client/smb2transport.c
> +++ b/fs/smb/client/smb2transport.c
> @@ -202,12 +202,11 @@ smb2_find_smb_tcon(struct TCP_Server_Info *server, __u64 ses_id, __u32 tid)
>
> return tcon;
> }
>
> static int
> -smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server,
> - bool allocate_crypto)
> +smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server)
> {
> int rc;
> unsigned char smb2_signature[SMB2_HMACSHA256_SIZE];
> struct kvec *iov = rqst->rq_iov;
> struct smb2_hdr *shdr = (struct smb2_hdr *)iov[0].iov_base;
> @@ -438,12 +437,11 @@ generate_smb311signingkey(struct cifs_ses *ses,
>
> return generate_smb3signingkey(ses, server, &triplet);
> }
>
> static int
> -smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server,
> - bool allocate_crypto)
> +smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server)
> {
> int rc;
> unsigned char smb3_signature[SMB2_CMACAES_SIZE];
> struct kvec *iov = rqst->rq_iov;
> struct smb2_hdr *shdr = (struct smb2_hdr *)iov[0].iov_base;
> @@ -451,11 +449,11 @@ smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server,
> struct aes_cmac_ctx cmac_ctx;
> struct smb_rqst drqst;
> u8 key[SMB3_SIGN_KEY_SIZE];
>
> if (server->vals->protocol_id <= SMB21_PROT_ID)
> - return smb2_calc_signature(rqst, server, allocate_crypto);
> + return smb2_calc_signature(rqst, server);
>
> rc = smb3_get_sign_key(le64_to_cpu(shdr->SessionId), server, key);
> if (unlikely(rc)) {
> cifs_server_dbg(FYI, "%s: Could not get signing key\n", __func__);
> return rc;
> @@ -522,11 +520,11 @@ smb2_sign_rqst(struct smb_rqst *rqst, struct TCP_Server_Info *server)
> if (!is_binding && !server->session_estab) {
> strscpy(shdr->Signature, "BSRSPYL");
> return 0;
> }
>
> - return smb3_calc_signature(rqst, server, false);
> + return smb3_calc_signature(rqst, server);
> }
>
> int
> smb2_verify_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server)
> {
> @@ -558,11 +556,11 @@ smb2_verify_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server)
> */
> memcpy(server_response_sig, shdr->Signature, SMB2_SIGNATURE_SIZE);
>
> memset(shdr->Signature, 0, SMB2_SIGNATURE_SIZE);
>
> - rc = smb3_calc_signature(rqst, server, true);
> + rc = smb3_calc_signature(rqst, server);
>
> if (rc)
> return rc;
>
> if (crypto_memneq(server_response_sig, shdr->Signature,
> --
> 2.53.0
>
>
--
Thanks,
Steve