diff --git a/drivers/crypto/rockchip/cryptodev_linux/cryptlib.c b/drivers/crypto/rockchip/cryptodev_linux/cryptlib.c index 602492645d2e..7129aee4e3f8 100644 --- a/drivers/crypto/rockchip/cryptodev_linux/cryptlib.c +++ b/drivers/crypto/rockchip/cryptodev_linux/cryptlib.c @@ -154,7 +154,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, out->async.s = cryptodev_crypto_alloc_blkcipher(alg_name, 0, 0); if (unlikely(IS_ERR(out->async.s))) { ddebug(1, "Failed to load cipher %s", alg_name); - return -EINVAL; + return PTR_ERR(out->async.s); } #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)) @@ -358,7 +358,7 @@ int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name, hdata->async.s = crypto_alloc_ahash(alg_name, 0, 0); if (unlikely(IS_ERR(hdata->async.s))) { ddebug(1, "Failed to load transform for %s", alg_name); - return -EINVAL; + return PTR_ERR(hdata->async.s); } /* Copy the key from user and set to TFM. */ diff --git a/drivers/crypto/rockchip/cryptodev_linux/crypto/cryptodev.h b/drivers/crypto/rockchip/cryptodev_linux/crypto/cryptodev.h index 88d7584c23c8..b960f988c94b 100644 --- a/drivers/crypto/rockchip/cryptodev_linux/crypto/cryptodev.h +++ b/drivers/crypto/rockchip/cryptodev_linux/crypto/cryptodev.h @@ -98,6 +98,8 @@ enum cryptodev_crypto_op_t { CRYPTO_RK_SHA1_HMAC, CRYPTO_RK_SHA256_HMAC, CRYPTO_RK_SHA512_HMAC, + CRYPTO_RK_SM3, + CRYPTO_RK_SM3_HMAC, CRYPTO_ALGORITHM_ALL, /* Keep updated - see below */ }; diff --git a/drivers/crypto/rockchip/cryptodev_linux/ioctl.c b/drivers/crypto/rockchip/cryptodev_linux/ioctl.c index 07ed97967edc..64dfb24b5764 100644 --- a/drivers/crypto/rockchip/cryptodev_linux/ioctl.c +++ b/drivers/crypto/rockchip/cryptodev_linux/ioctl.c @@ -275,7 +275,6 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop) keylen, stream, aead); if (ret < 0) { ddebug(1, "Failed to load cipher for %s", alg_name); - ret = -EINVAL; goto session_error; } } @@ -298,7 +297,6 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop) keys.mkey, sop->mackeylen); if (ret != 0) { ddebug(1, "Failed to load hash for %s", hash_name); - ret = -EINVAL; goto session_error; } diff --git a/drivers/crypto/rockchip/cryptodev_linux/rk_cryptodev.c b/drivers/crypto/rockchip/cryptodev_linux/rk_cryptodev.c index 3f40838d1572..370f1f84fc0f 100644 --- a/drivers/crypto/rockchip/cryptodev_linux/rk_cryptodev.c +++ b/drivers/crypto/rockchip/cryptodev_linux/rk_cryptodev.c @@ -887,8 +887,6 @@ static const struct cipher_algo_name_map c_algo_map_tbl[] = { {CRYPTO_RK_SM4_XTS, "xts-sm4-rk", 0, 0}, {CRYPTO_RK_SM4_CCM, "ccm-sm4-rk", 1, 1}, {CRYPTO_RK_SM4_GCM, "gcm-sm4-rk", 1, 1}, - {CRYPTO_RK_SM4_CMAC, NULL, 0, 0}, - {CRYPTO_RK_SM4_CBC_MAC, NULL, 0, 0}, {CRYPTO_RK_AES_ECB, "ecb-aes-rk", 0, 0}, {CRYPTO_RK_AES_CBC, "cbc-aes-rk", 0, 0}, {CRYPTO_RK_AES_CFB, "cfb-aes-rk", 0, 0}, @@ -898,8 +896,6 @@ static const struct cipher_algo_name_map c_algo_map_tbl[] = { {CRYPTO_RK_AES_XTS, "xts-aes-rk", 0, 0}, {CRYPTO_RK_AES_CCM, "ccm-aes-rk", 1, 1}, {CRYPTO_RK_AES_GCM, "gcm-aes-rk", 1, 1}, - {CRYPTO_RK_AES_CMAC, NULL, 0, 0}, - {CRYPTO_RK_AES_CBC_MAC, NULL, 0, 0}, }; static const struct hash_algo_name_map h_algo_map_tbl[] = { @@ -912,10 +908,16 @@ static const struct hash_algo_name_map h_algo_map_tbl[] = { {CRYPTO_RK_SHA512, "sha512-rk", 0}, {CRYPTO_RK_SHA512_224, "sha512_224-rk", 0}, {CRYPTO_RK_SHA512_256, "sha512_256-rk", 0}, + {CRYPTO_RK_SM3, "sm3-rk", 0}, {CRYPTO_RK_MD5_HMAC, "hmac-md5-rk", 1}, {CRYPTO_RK_SHA1_HMAC, "hmac-sha1-rk", 1}, {CRYPTO_RK_SHA256_HMAC, "hmac-sha256-rk", 1}, {CRYPTO_RK_SHA512_HMAC, "hmac-sha512-rk", 1}, + {CRYPTO_RK_SM3_HMAC, "hmac-sm3-rk", 1}, + {CRYPTO_RK_SM4_CMAC, "cmac-sm4-rk", 1}, + {CRYPTO_RK_SM4_CBC_MAC, "cbcmac-sm4-rk", 1}, + {CRYPTO_RK_AES_CMAC, "cmac-aes-rk", 1}, + {CRYPTO_RK_AES_CBC_MAC, "cbcmac-aes-rk", 1}, }; const char *rk_get_cipher_name(uint32_t id, int *is_stream, int *is_aead)