cifs_free_hash(&server->secmech.aes_cmac);
        cifs_free_hash(&server->secmech.hmacsha256);
        cifs_free_hash(&server->secmech.md5);
-       cifs_free_hash(&server->secmech.sha512);
 
        if (!SERVER_IS_CHAN(server)) {
                if (server->secmech.enc) {
 
 struct cifs_secmech {
        struct shash_desc *md5; /* md5 hash function, for CIFS/SMB1 signatures */
        struct shash_desc *hmacsha256; /* hmac-sha256 hash function, for SMB2 signatures */
-       struct shash_desc *sha512; /* sha512 hash function, for SMB3.1.1 preauth hash */
        struct shash_desc *aes_cmac; /* block-cipher based MAC function, for SMB3 signatures */
 
        struct crypto_aead *enc; /* smb3 encryption AEAD TFM (AES-CCM and AES-GCM) */
 
         * to sign packets before we generate the channel signing key
         * (we sign with the session key)
         */
-       rc = smb311_crypto_shash_allocate(chan->server);
+       rc = smb3_crypto_shash_allocate(chan->server);
        if (rc) {
                cifs_dbg(VFS, "%s: crypto alloc failed\n", __func__);
                mutex_unlock(&ses->session_mutex);
 
                || (hdr->Status !=
                    cpu_to_le32(NT_STATUS_MORE_PROCESSING_REQUIRED))))
                return 0;
-
 ok:
-       rc = smb311_crypto_shash_allocate(server);
-       if (rc)
+       rc = cifs_alloc_hash("sha512", &sha512);
+       if (rc) {
+               cifs_dbg(VFS, "%s: Could not allocate SHA512 shash, rc=%d\n", __func__, rc);
                return rc;
+       }
 
-       sha512 = server->secmech.sha512;
        rc = crypto_shash_init(sha512);
        if (rc) {
-               cifs_dbg(VFS, "%s: Could not init sha512 shash\n", __func__);
-               return rc;
+               cifs_dbg(VFS, "%s: Could not init SHA512 shash, rc=%d\n", __func__, rc);
+               goto err_free;
        }
 
        rc = crypto_shash_update(sha512, ses->preauth_sha_hash,
                                 SMB2_PREAUTH_HASH_SIZE);
        if (rc) {
-               cifs_dbg(VFS, "%s: Could not update sha512 shash\n", __func__);
-               return rc;
+               cifs_dbg(VFS, "%s: Could not update SHA512 shash, rc=%d\n", __func__, rc);
+               goto err_free;
        }
 
        for (i = 0; i < nvec; i++) {
                rc = crypto_shash_update(sha512, iov[i].iov_base, iov[i].iov_len);
                if (rc) {
-                       cifs_dbg(VFS, "%s: Could not update sha512 shash\n",
-                                __func__);
-                       return rc;
+                       cifs_dbg(VFS, "%s: Could not update SHA512 shash, rc=%d\n", __func__, rc);
+                       goto err_free;
                }
        }
 
        rc = crypto_shash_final(sha512, ses->preauth_sha_hash);
        if (rc) {
-               cifs_dbg(VFS, "%s: Could not finalize sha512 shash\n",
-                        __func__);
-               return rc;
+               cifs_dbg(VFS, "%s: Could not finalize SHA12 shash, rc=%d\n", __func__, rc);
+               goto err_free;
        }
+err_free:
+       cifs_free_hash(&sha512);
 
        return 0;
 }
 
 extern void smb2_copy_fs_info_to_kstatfs(
         struct smb2_fs_full_size_info *pfs_inf,
         struct kstatfs *kst);
-extern int smb311_crypto_shash_allocate(struct TCP_Server_Info *server);
+extern int smb3_crypto_shash_allocate(struct TCP_Server_Info *server);
 extern int smb311_update_preauth_hash(struct cifs_ses *ses,
                                      struct TCP_Server_Info *server,
                                      struct kvec *iov, int nvec);
 
 #include "../common/smb2status.h"
 #include "smb2glob.h"
 
-static int
-smb3_crypto_shash_allocate(struct TCP_Server_Info *server)
+int smb3_crypto_shash_allocate(struct TCP_Server_Info *server)
 {
        struct cifs_secmech *p = &server->secmech;
        int rc;
        return rc;
 }
 
-int
-smb311_crypto_shash_allocate(struct TCP_Server_Info *server)
-{
-       struct cifs_secmech *p = &server->secmech;
-       int rc = 0;
-
-       rc = cifs_alloc_hash("hmac(sha256)", &p->hmacsha256);
-       if (rc)
-               return rc;
-
-       rc = cifs_alloc_hash("cmac(aes)", &p->aes_cmac);
-       if (rc)
-               goto err;
-
-       rc = cifs_alloc_hash("sha512", &p->sha512);
-       if (rc)
-               goto err;
-
-       return 0;
-
-err:
-       cifs_free_hash(&p->aes_cmac);
-       cifs_free_hash(&p->hmacsha256);
-       return rc;
-}
-
-
 static
 int smb2_get_sign_key(__u64 ses_id, struct TCP_Server_Info *server, u8 *key)
 {