Re: [PATCH 10/29] crypto: talitos - Remove alg settings in talitos_register_common()
From: Paul Louvel
Date: Thu Jun 04 2026 - 08:46:07 EST
On Mon Jun 1, 2026 at 1:53 PM CEST, Christophe Leroy (CS GROUP) wrote:
>
>
> Le 28/05/2026 à 11:08, Paul Louvel a écrit :
>> Algorithm properties should be set at definition time.
>
> Can you provide more details on why it _should_ be set at definition time ?
"Should" is definetly not the right wording here. In my opinion, it would be
better if they were set a definition time.
The properties set in talitos_alg_set_common() have no reason to be set at
runtime, unlike the properties set in the algorithm registration functions that
depends on runtime checks (if the hardware supports a feature or not).
>
> Also, couldn't this change be done after the "Use macro for algorithm
> definitions" patches in order to minimise churn ?
>
Yes.
>>
>> Signed-off-by: Paul Louvel <paul.louvel@xxxxxxxxxxx>
>> ---
>> drivers/crypto/talitos/talitos-aead.c | 131 +++++++++++++++++++++++-------
>> drivers/crypto/talitos/talitos-hash.c | 72 +++++++++++++---
>> drivers/crypto/talitos/talitos-skcipher.c | 51 ++++++++++--
>> drivers/crypto/talitos/talitos.c | 23 ------
>> 4 files changed, 206 insertions(+), 71 deletions(-)
>>
>> diff --git a/drivers/crypto/talitos/talitos-aead.c b/drivers/crypto/talitos/talitos-aead.c
>> index ce6bd6133fd0..c09ed08be2ef 100644
>> --- a/drivers/crypto/talitos/talitos-aead.c
>> +++ b/drivers/crypto/talitos/talitos-aead.c
>> @@ -409,7 +409,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = SHA1_DIGEST_SIZE,
>> @@ -423,7 +427,6 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> DESC_HDR_MODE1_MDEU_SHA1_HMAC,
>> },
>> { .type = CRYPTO_ALG_TYPE_AEAD,
>> - .priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> .alg.aead = {
>> .base = {
>> .cra_name = "authenc(hmac(sha1),cbc(aes))",
>> @@ -431,7 +434,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos-hsna",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = SHA1_DIGEST_SIZE,
>> @@ -453,7 +460,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = SHA1_DIGEST_SIZE,
>> @@ -469,7 +480,6 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> DESC_HDR_MODE1_MDEU_SHA1_HMAC,
>> },
>> { .type = CRYPTO_ALG_TYPE_AEAD,
>> - .priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> .alg.aead = {
>> .base = {
>> .cra_name = "authenc(hmac(sha1),"
>> @@ -478,7 +488,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos-hsna",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = SHA1_DIGEST_SIZE,
>> @@ -501,7 +515,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = SHA224_DIGEST_SIZE,
>> @@ -515,7 +533,6 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> DESC_HDR_MODE1_MDEU_SHA224_HMAC,
>> },
>> { .type = CRYPTO_ALG_TYPE_AEAD,
>> - .priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> .alg.aead = {
>> .base = {
>> .cra_name = "authenc(hmac(sha224),cbc(aes))",
>> @@ -523,7 +540,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos-hsna",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = SHA224_DIGEST_SIZE,
>> @@ -545,7 +566,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = SHA224_DIGEST_SIZE,
>> @@ -561,7 +586,6 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> DESC_HDR_MODE1_MDEU_SHA224_HMAC,
>> },
>> { .type = CRYPTO_ALG_TYPE_AEAD,
>> - .priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> .alg.aead = {
>> .base = {
>> .cra_name = "authenc(hmac(sha224),"
>> @@ -570,7 +594,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos-hsna",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = SHA224_DIGEST_SIZE,
>> @@ -593,7 +621,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = SHA256_DIGEST_SIZE,
>> @@ -607,7 +639,6 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> DESC_HDR_MODE1_MDEU_SHA256_HMAC,
>> },
>> { .type = CRYPTO_ALG_TYPE_AEAD,
>> - .priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> .alg.aead = {
>> .base = {
>> .cra_name = "authenc(hmac(sha256),cbc(aes))",
>> @@ -615,7 +646,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos-hsna",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = SHA256_DIGEST_SIZE,
>> @@ -637,7 +672,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = SHA256_DIGEST_SIZE,
>> @@ -653,7 +692,6 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> DESC_HDR_MODE1_MDEU_SHA256_HMAC,
>> },
>> { .type = CRYPTO_ALG_TYPE_AEAD,
>> - .priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> .alg.aead = {
>> .base = {
>> .cra_name = "authenc(hmac(sha256),"
>> @@ -662,7 +700,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos-hsna",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = SHA256_DIGEST_SIZE,
>> @@ -685,7 +727,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = SHA384_DIGEST_SIZE,
>> @@ -707,7 +753,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = SHA384_DIGEST_SIZE,
>> @@ -730,7 +780,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = SHA512_DIGEST_SIZE,
>> @@ -752,7 +806,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = SHA512_DIGEST_SIZE,
>> @@ -775,7 +833,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = MD5_DIGEST_SIZE,
>> @@ -789,7 +851,6 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> DESC_HDR_MODE1_MDEU_MD5_HMAC,
>> },
>> { .type = CRYPTO_ALG_TYPE_AEAD,
>> - .priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> .alg.aead = {
>> .base = {
>> .cra_name = "authenc(hmac(md5),cbc(aes))",
>> @@ -797,7 +858,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-aes-talitos-hsna",
>> .cra_blocksize = AES_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = AES_BLOCK_SIZE,
>> .maxauthsize = MD5_DIGEST_SIZE,
>> @@ -818,7 +883,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = MD5_DIGEST_SIZE,
>> @@ -834,7 +903,6 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> DESC_HDR_MODE1_MDEU_MD5_HMAC,
>> },
>> { .type = CRYPTO_ALG_TYPE_AEAD,
>> - .priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> .alg.aead = {
>> .base = {
>> .cra_name = "authenc(hmac(md5),cbc(des3_ede))",
>> @@ -842,7 +910,11 @@ static struct talitos_alg_template aead_driver_algs[] = {
>> "cbc-3des-talitos-hsna",
>> .cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .cra_priority = TALITOS_CRA_PRIORITY_AEAD_HSNA,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> },
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> .maxauthsize = MD5_DIGEST_SIZE,
>> @@ -875,6 +947,9 @@ int talitos_register_aead(struct device *dev)
>> aead_alg = &aead_driver_algs[i].alg.aead;
>> alg = &aead_alg->base;
>>
>> + if (has_ftr_sec1(priv))
>> + alg->cra_alignmask = 3;
>> +
>> alg->cra_exit = talitos_cra_exit;
>> aead_alg->init = talitos_cra_init_aead;
>> aead_alg->setkey = aead_alg->setkey ?: aead_setkey;
>> diff --git a/drivers/crypto/talitos/talitos-hash.c b/drivers/crypto/talitos/talitos-hash.c
>> index 5792e7093392..3793b6fd5b75 100644
>> --- a/drivers/crypto/talitos/talitos-hash.c
>> +++ b/drivers/crypto/talitos/talitos-hash.c
>> @@ -559,8 +559,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -578,8 +582,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -597,8 +605,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -616,8 +628,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -635,8 +651,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -654,8 +674,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -673,8 +697,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -692,8 +720,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -711,8 +743,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -730,8 +766,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -749,8 +789,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> @@ -768,8 +812,12 @@ static struct talitos_alg_template hash_driver_algs[] = {
>> .cra_reqsize = sizeof(struct talitos_ahash_req_ctx),
>> .cra_flags = CRYPTO_ALG_ASYNC |
>> CRYPTO_ALG_ALLOCATES_MEMORY |
>> - CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY |
>> + CRYPTO_AHASH_ALG_BLOCK_ONLY |
>> CRYPTO_AHASH_ALG_FINAL_NONZERO,
>> + .cra_priority = TALITOS_CRA_PRIORITY,
>> + .cra_ctxsize = sizeof(struct talitos_ctx),
>> + .cra_module = THIS_MODULE,
>> }
>> },
>> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>> diff --git a/drivers/crypto/talitos/talitos-skcipher.c b/drivers/crypto/talitos/talitos-skcipher.c
>> index 4f742930ec47..ff7b8f9344c4 100644
>> --- a/drivers/crypto/talitos/talitos-skcipher.c
>> +++ b/drivers/crypto/talitos/talitos-skcipher.c
>> @@ -239,7 +239,11 @@ static struct talitos_alg_template skcipher_driver_algs[] = {
>> .base.cra_driver_name = "ecb-aes-talitos",
>> .base.cra_blocksize = AES_BLOCK_SIZE,
>> .base.cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .base.cra_priority = TALITOS_CRA_PRIORITY,
>> + .base.cra_ctxsize = sizeof(struct talitos_ctx),
>> + .base.cra_module = THIS_MODULE,
>> .min_keysize = AES_MIN_KEY_SIZE,
>> .max_keysize = AES_MAX_KEY_SIZE,
>> .setkey = skcipher_aes_setkey,
>> @@ -253,7 +257,11 @@ static struct talitos_alg_template skcipher_driver_algs[] = {
>> .base.cra_driver_name = "cbc-aes-talitos",
>> .base.cra_blocksize = AES_BLOCK_SIZE,
>> .base.cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .base.cra_priority = TALITOS_CRA_PRIORITY,
>> + .base.cra_ctxsize = sizeof(struct talitos_ctx),
>> + .base.cra_module = THIS_MODULE,
>> .min_keysize = AES_MIN_KEY_SIZE,
>> .max_keysize = AES_MAX_KEY_SIZE,
>> .ivsize = AES_BLOCK_SIZE,
>> @@ -269,7 +277,11 @@ static struct talitos_alg_template skcipher_driver_algs[] = {
>> .base.cra_driver_name = "ctr-aes-talitos",
>> .base.cra_blocksize = 1,
>> .base.cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .base.cra_priority = TALITOS_CRA_PRIORITY,
>> + .base.cra_ctxsize = sizeof(struct talitos_ctx),
>> + .base.cra_module = THIS_MODULE,
>> .min_keysize = AES_MIN_KEY_SIZE,
>> .max_keysize = AES_MAX_KEY_SIZE,
>> .ivsize = AES_BLOCK_SIZE,
>> @@ -285,7 +297,11 @@ static struct talitos_alg_template skcipher_driver_algs[] = {
>> .base.cra_driver_name = "ctr-aes-talitos",
>> .base.cra_blocksize = 1,
>> .base.cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .base.cra_priority = TALITOS_CRA_PRIORITY,
>> + .base.cra_ctxsize = sizeof(struct talitos_ctx),
>> + .base.cra_module = THIS_MODULE,
>> .min_keysize = AES_MIN_KEY_SIZE,
>> .max_keysize = AES_MAX_KEY_SIZE,
>> .ivsize = AES_BLOCK_SIZE,
>> @@ -301,7 +317,11 @@ static struct talitos_alg_template skcipher_driver_algs[] = {
>> .base.cra_driver_name = "ecb-des-talitos",
>> .base.cra_blocksize = DES_BLOCK_SIZE,
>> .base.cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .base.cra_priority = TALITOS_CRA_PRIORITY,
>> + .base.cra_ctxsize = sizeof(struct talitos_ctx),
>> + .base.cra_module = THIS_MODULE,
>> .min_keysize = DES_KEY_SIZE,
>> .max_keysize = DES_KEY_SIZE,
>> .setkey = skcipher_des_setkey,
>> @@ -315,7 +335,11 @@ static struct talitos_alg_template skcipher_driver_algs[] = {
>> .base.cra_driver_name = "cbc-des-talitos",
>> .base.cra_blocksize = DES_BLOCK_SIZE,
>> .base.cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .base.cra_priority = TALITOS_CRA_PRIORITY,
>> + .base.cra_ctxsize = sizeof(struct talitos_ctx),
>> + .base.cra_module = THIS_MODULE,
>> .min_keysize = DES_KEY_SIZE,
>> .max_keysize = DES_KEY_SIZE,
>> .ivsize = DES_BLOCK_SIZE,
>> @@ -331,7 +355,11 @@ static struct talitos_alg_template skcipher_driver_algs[] = {
>> .base.cra_driver_name = "ecb-3des-talitos",
>> .base.cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .base.cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .base.cra_priority = TALITOS_CRA_PRIORITY,
>> + .base.cra_ctxsize = sizeof(struct talitos_ctx),
>> + .base.cra_module = THIS_MODULE,
>> .min_keysize = DES3_EDE_KEY_SIZE,
>> .max_keysize = DES3_EDE_KEY_SIZE,
>> .setkey = skcipher_des3_setkey,
>> @@ -346,7 +374,11 @@ static struct talitos_alg_template skcipher_driver_algs[] = {
>> .base.cra_driver_name = "cbc-3des-talitos",
>> .base.cra_blocksize = DES3_EDE_BLOCK_SIZE,
>> .base.cra_flags = CRYPTO_ALG_ASYNC |
>> - CRYPTO_ALG_ALLOCATES_MEMORY,
>> + CRYPTO_ALG_ALLOCATES_MEMORY |
>> + CRYPTO_ALG_KERN_DRIVER_ONLY,
>> + .base.cra_priority = TALITOS_CRA_PRIORITY,
>> + .base.cra_ctxsize = sizeof(struct talitos_ctx),
>> + .base.cra_module = THIS_MODULE,
>> .min_keysize = DES3_EDE_KEY_SIZE,
>> .max_keysize = DES3_EDE_KEY_SIZE,
>> .ivsize = DES3_EDE_BLOCK_SIZE,
>> @@ -375,6 +407,9 @@ int talitos_register_skcipher(struct device *dev)
>> skcipher_alg = &skcipher_driver_algs[i].alg.skcipher;
>> alg = &skcipher_alg->base;
>>
>> + if (has_ftr_sec1(priv))
>> + alg->cra_alignmask = 3;
>> +
>> alg->cra_exit = talitos_cra_exit;
>> skcipher_alg->init = talitos_cra_init_skcipher;
>> skcipher_alg->setkey = skcipher_alg->setkey ?: skcipher_setkey;
>> diff --git a/drivers/crypto/talitos/talitos.c b/drivers/crypto/talitos/talitos.c
>> index 41d7d0e570e3..f38a156a0459 100644
>> --- a/drivers/crypto/talitos/talitos.c
>> +++ b/drivers/crypto/talitos/talitos.c
>> @@ -1133,23 +1133,6 @@ static void talitos_remove(struct platform_device *ofdev)
>> tasklet_kill(&priv->done_task[1]);
>> }
>>
>> -static void talitos_alg_set_common(struct talitos_private *priv,
>> - struct crypto_alg *alg, u32 custom_priority,
>> - u32 type)
>> -{
>> - alg->cra_module = THIS_MODULE;
>> - if (custom_priority)
>> - alg->cra_priority = custom_priority;
>> - else
>> - alg->cra_priority = TALITOS_CRA_PRIORITY;
>> - if (has_ftr_sec1(priv) && type != CRYPTO_ALG_TYPE_AHASH)
>> - alg->cra_alignmask = 3;
>> - else
>> - alg->cra_alignmask = 0;
>> - alg->cra_ctxsize = sizeof(struct talitos_ctx);
>> - alg->cra_flags |= CRYPTO_ALG_KERN_DRIVER_ONLY;
>> -}
>> -
>> int talitos_register_common(struct device *dev,
>> struct talitos_alg_template *template)
>> {
>> @@ -1168,20 +1151,14 @@ int talitos_register_common(struct device *dev,
>> switch (t_alg->algt.type) {
>> case CRYPTO_ALG_TYPE_AHASH:
>> alg = &t_alg->algt.alg.hash.halg.base;
>> - talitos_alg_set_common(priv, alg, t_alg->algt.priority,
>> - t_alg->algt.type);
>> ret = crypto_register_ahash(&t_alg->algt.alg.hash);
>> break;
>> case CRYPTO_ALG_TYPE_SKCIPHER:
>> alg = &t_alg->algt.alg.skcipher.base;
>> - talitos_alg_set_common(priv, alg, t_alg->algt.priority,
>> - t_alg->algt.type);
>> ret = crypto_register_skcipher(&t_alg->algt.alg.skcipher);
>> break;
>> case CRYPTO_ALG_TYPE_AEAD:
>> alg = &t_alg->algt.alg.aead.base;
>> - talitos_alg_set_common(priv, alg, t_alg->algt.priority,
>> - t_alg->algt.type);
>> ret = crypto_register_aead(&t_alg->algt.alg.aead);
>> break;
>> default:
>>
Thanks,
Paul.
--
Paul Louvel, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com