Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (2nd attempt)
Subsystems (4)
PATCH 1/1 Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (2nd attempt)
The added CRYPTO_ALG_KERN_DRIVER_ONLY indicates whether a cipher is only available via a kernel driver. If the cipher implementation might be available by using an instruction set or by porting the kernel code, then it must not be set.
In addition it provides crypto_tfm_alg_flags() to obtain this and other possible flags.
--- drivers/crypto/caam/caamalg.c | 3 +- drivers/crypto/geode-aes.c | 6 +++- drivers/crypto/hifn_795x.c | 3 +- drivers/crypto/ixp4xx_crypto.c | 2 + drivers/crypto/mv_cesa.c | 12 ++++++--- drivers/crypto/n2_core.c | 7 ++++- drivers/crypto/omap-aes.c | 8 ++++- drivers/crypto/omap-sham.c | 4 +++ drivers/crypto/picoxcell_crypto.c | 46 ++++++++++++++++++++++++++-------- drivers/crypto/s5p-sss.c | 6 +++- drivers/crypto/talitos.c | 49 ++++++++++++++++++++++++++---------- include/linux/crypto.h | 10 +++++++ 12 files changed, 117 insertions(+), 39 deletions(-)
drivers/crypto/caam/caamalg.c +2 -1
@@ -2205,7 +2205,8 @@ static struct caam_crypto_alg *caam_alg_alloc(struct device *ctrldev, alg->cra_blocksize = template->blocksize; alg->cra_alignmask =0 ; alg->cra_ctxsize =sizeof (struct caam_ctx ); - alg->cra_flags =CRYPTO_ALG_ASYNC | template->type; + alg->cra_flags =CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY | + template->type;switch (template->type) {case CRYPTO_ALG_TYPE_ABLKCIPHER : alg->cra_type = &crypto_ablkcipher_type;
drivers/crypto/geode-aes.c +4 -2
@@ -393,7 +393,8 @@ static struct crypto_alg geode_cbc_alg = { .cra_driver_name = "cbc-aes-geode", .cra_priority = 400, .cra_flags =CRYPTO_ALG_TYPE_BLKCIPHER | - CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_init = fallback_init_blk, .cra_exit = fallback_exit_blk, .cra_blocksize = AES_MIN_BLOCK_SIZE,
@@ -479,7 +480,8 @@ static struct crypto_alg geode_ecb_alg = { .cra_driver_name = "ecb-aes-geode", .cra_priority = 400, .cra_flags =CRYPTO_ALG_TYPE_BLKCIPHER | - CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_init = fallback_init_blk, .cra_exit = fallback_exit_blk, .cra_blocksize = AES_MIN_BLOCK_SIZE,
drivers/crypto/hifn_795x.c +2 -1
@@ -2494,7 +2494,8 @@ static int hifn_alg_alloc(struct hifn_device *dev, struct hifn_alg_template *t) t->drv_name, dev->name); alg->alg.cra_priority =300 ; - alg->alg.cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER |CRYPTO_ALG_ASYNC ; + alg->alg.cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ; alg->alg.cra_blocksize = t->bsize; alg->alg.cra_ctxsize =sizeof (struct hifn_context ); alg->alg.cra_alignmask =0 ;
drivers/crypto/ixp4xx_crypto.c +2 -0
@@ -1449,6 +1449,7 @@ static int __init ixp_module_init(void)/* block ciphers */ cra->cra_type = &crypto_ablkcipher_type; cra->cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ;if (!cra->cra_ablkcipher.setkey) cra->cra_ablkcipher.setkey = ablk_setkey;
@@ -1461,6 +1462,7 @@ static int __init ixp_module_init(void)/* authenc */ cra->cra_type = &crypto_aead_type; cra->cra_flags =CRYPTO_ALG_TYPE_AEAD | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ; cra->cra_aead.setkey = aead_setkey; cra->cra_aead.setauthsize = aead_setauthsize;
drivers/crypto/mv_cesa.c +8 -4
@@ -896,7 +896,8 @@ struct crypto_alg mv_aes_alg_ecb = { .cra_name = "ecb(aes)", .cra_driver_name = "mv-ecb-aes", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | + CRYPTO_ALG_KERN_DRIVER_ONLY | CRYPTO_ALG_ASYNC, .cra_blocksize = 16, .cra_ctxsize = sizeof(struct mv_ctx), .cra_alignmask = 0,
@@ -918,7 +919,8 @@ struct crypto_alg mv_aes_alg_cbc = { .cra_name = "cbc(aes)", .cra_driver_name = "mv-cbc-aes", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | + CRYPTO_ALG_KERN_DRIVER_ONLY | CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct mv_ctx), .cra_alignmask = 0,
@@ -950,7 +952,8 @@ struct ahash_alg mv_sha1_alg = { .cra_driver_name = "mv-sha1", .cra_priority = 300, .cra_flags = - CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE, .cra_ctxsize = sizeof(struct mv_tfm_hash_ctx), .cra_init = mv_cra_hash_sha1_init,
@@ -974,7 +977,8 @@ struct ahash_alg mv_hmac_sha1_alg = { .cra_driver_name = "mv-hmac-sha1", .cra_priority = 300, .cra_flags = - CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE, .cra_ctxsize = sizeof(struct mv_tfm_hash_ctx), .cra_init = mv_cra_hash_hmac_sha1_init,
drivers/crypto/n2_core.c +5 -2
@@ -1402,7 +1402,8 @@ static int __devinit __n2_register_one_cipher(const struct n2_cipher_tmpl *tmpl)snprintf (alg->cra_name,CRYPTO_MAX_ALG_NAME ,"%s" , tmpl->name);snprintf (alg->cra_driver_name,CRYPTO_MAX_ALG_NAME ,"%s-n2" , tmpl->drv_name); alg->cra_priority =N2_CRA_PRIORITY ; - alg->cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER |CRYPTO_ALG_ASYNC ; + alg->cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ; alg->cra_blocksize = tmpl->block_size; p->enc_type = tmpl->enc_type; alg->cra_ctxsize =sizeof (struct n2_cipher_context );
@@ -1493,7 +1494,9 @@ static int __devinit __n2_register_one_ahash(const struct n2_hash_tmpl *tmpl)snprintf (base->cra_name,CRYPTO_MAX_ALG_NAME ,"%s" , tmpl->name);snprintf (base->cra_driver_name,CRYPTO_MAX_ALG_NAME ,"%s-n2" , tmpl->name); base->cra_priority =N2_CRA_PRIORITY ; - base->cra_flags =CRYPTO_ALG_TYPE_AHASH |CRYPTO_ALG_NEED_FALLBACK ; + base->cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY | +CRYPTO_ALG_NEED_FALLBACK ; base->cra_blocksize = tmpl->block_size; base->cra_ctxsize =sizeof (struct n2_hash_ctx ); base->cra_module =THIS_MODULE ;
drivers/crypto/omap-aes.c +6 -2
@@ -756,7 +756,9 @@ static struct crypto_alg algs[] = { .cra_name = "ecb(aes)", .cra_driver_name = "ecb-aes-omap", .cra_priority = 100, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct omap_aes_ctx), .cra_alignmask = 0,
@@ -776,7 +778,9 @@ static struct crypto_alg algs[] = { .cra_name = "cbc(aes)", .cra_driver_name = "cbc-aes-omap", .cra_priority = 100, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct omap_aes_ctx), .cra_alignmask = 0,
drivers/crypto/omap-sham.c +4 -0
@@ -953,6 +953,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-sha1", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
@@ -975,6 +976,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-md5", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
@@ -998,6 +1000,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-hmac-sha1", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
@@ -1022,6 +1025,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-hmac-md5", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
drivers/crypto/picoxcell_crypto.c +35 -11
124 lines not on this page · raw message
drivers/crypto/s5p-sss.c +4 -2
@@ -518,7 +518,8 @@ static struct crypto_alg algs[] = { .cra_driver_name = "ecb-aes-s5p", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct s5p_aes_ctx), .cra_alignmask = 0x0f,
@@ -538,7 +539,8 @@ static struct crypto_alg algs[] = { .cra_driver_name = "cbc-aes-s5p", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct s5p_aes_ctx), .cra_alignmask = 0x0f,
drivers/crypto/talitos.c +35 -14
139 lines not on this page · raw message
include/linux/crypto.h +10 -0
@@ -75,6 +75,11 @@*/ #define CRYPTO_ALG_INSTANCE 0x00000800 +/* Set this bit if the algorithm provided is hardware accelerated but +* not available to userspace via instruction set or so. +*/ +#define CRYPTO_ALG_KERN_DRIVER_ONLY 0x00001000 +/* * Transform masks and values (for crt_flags). */
@@ -514,6 +519,11 @@ static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm)return tfm->__crt_alg->cra_flags &CRYPTO_ALG_TYPE_MASK ; } +static inline u32 crypto_tfm_alg_flags (struct crypto_tfm *tfm) +{ +return tfm->__crt_alg->cra_flags; +} +static inline unsigned int crypto_tfm_alg_blocksize (struct crypto_tfm *tfm) {return tfm->__crt_alg->cra_blocksize;
Signature · 1 line
1.7.7.3
On Tue, 13 Dec 2011 09:53:52 +0100
Nikos Mavrogiannopoulos <[email protected]> wrote:
Niko,
caam is ok. For talitos, either this way:
Quoted 141 lines
drivers/crypto/talitos.c +32
-13@@ -2007,7 +2007,9 @@ static struct talitos_alg_template driver_algs[] = { .cra_name = "authenc(hmac(sha1),cbc(aes))", .cra_driver_name = "authenc-hmac-sha1-cbc-aes-talitos", .cra_blocksize = AES_BLOCK_SIZE, - .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_AEAD | +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_aead_type, .cra_aead = { .setkey = aead_setkey,@@ -2033,7 +2035,9 @@ static struct talitos_alg_template driver_algs[] = { .cra_name = "authenc(hmac(sha1),cbc(des3_ede))", .cra_driver_name = "authenc-hmac-sha1-cbc-3des-talitos", .cra_blocksize = DES3_EDE_BLOCK_SIZE, - .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_AEAD | +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_aead_type, .cra_aead = { .setkey = aead_setkey,@@ -2060,7 +2064,9 @@ static struct talitos_alg_template driver_algs[] = { .cra_name = "authenc(hmac(sha256),cbc(aes))", .cra_driver_name = "authenc-hmac-sha256-cbc-aes-talitos", .cra_blocksize = AES_BLOCK_SIZE, - .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_AEAD | +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_aead_type, .cra_aead = { .setkey = aead_setkey,@@ -2086,7 +2092,9 @@ static struct talitos_alg_template driver_algs[] = { .cra_name = "authenc(hmac(sha256),cbc(des3_ede))", .cra_driver_name = "authenc-hmac-sha256-cbc-3des-talitos", .cra_blocksize = DES3_EDE_BLOCK_SIZE, - .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_AEAD | +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_aead_type, .cra_aead = { .setkey = aead_setkey,@@ -2113,7 +2121,9 @@ static struct talitos_alg_template driver_algs[] = { .cra_name = "authenc(hmac(md5),cbc(aes))", .cra_driver_name = "authenc-hmac-md5-cbc-aes-talitos", .cra_blocksize = AES_BLOCK_SIZE, - .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_AEAD | +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_aead_type, .cra_aead = { .setkey = aead_setkey,@@ -2139,7 +2149,9 @@ static struct talitos_alg_template driver_algs[] = { .cra_name = "authenc(hmac(md5),cbc(des3_ede))", .cra_driver_name = "authenc-hmac-md5-cbc-3des-talitos", .cra_blocksize = DES3_EDE_BLOCK_SIZE, - .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_AEAD | +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_aead_type, .cra_aead = { .setkey = aead_setkey,@@ -2168,7 +2180,8 @@ static struct talitos_alg_template driver_algs[] = { .cra_driver_name = "cbc-aes-talitos", .cra_blocksize = AES_BLOCK_SIZE, .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_ablkcipher_type, .cra_ablkcipher = { .setkey = ablkcipher_setkey,@@ -2190,7 +2203,8 @@ static struct talitos_alg_template driver_algs[] = { .cra_driver_name = "cbc-3des-talitos", .cra_blocksize = DES3_EDE_BLOCK_SIZE, .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_ablkcipher_type, .cra_ablkcipher = { .setkey = ablkcipher_setkey,@@ -2221,7 +2235,8 @@ static struct talitos_alg_template driver_algs[] = { .cra_driver_name = "md5-talitos", .cra_blocksize = MD5_BLOCK_SIZE, .cra_flags =CRYPTO_ALG_TYPE_AHASH | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_ahash_type } },@@ -2242,7 +2257,8 @@ static struct talitos_alg_template driver_algs[] = { .cra_driver_name = "sha1-talitos", .cra_blocksize = SHA1_BLOCK_SIZE, .cra_flags =CRYPTO_ALG_TYPE_AHASH | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_ahash_type } },@@ -2263,7 +2279,8 @@ static struct talitos_alg_template driver_algs[] = { .cra_driver_name = "sha224-talitos", .cra_blocksize = SHA224_BLOCK_SIZE, .cra_flags =CRYPTO_ALG_TYPE_AHASH | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_ahash_type } },@@ -2284,7 +2301,8 @@ static struct talitos_alg_template driver_algs[] = { .cra_driver_name = "sha256-talitos", .cra_blocksize = SHA256_BLOCK_SIZE, .cra_flags =CRYPTO_ALG_TYPE_AHASH | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_ahash_type } },@@ -2305,7 +2323,8 @@ static struct talitos_alg_template driver_algs[] = { .cra_driver_name = "sha384-talitos", .cra_blocksize = SHA384_BLOCK_SIZE, .cra_flags =CRYPTO_ALG_TYPE_AHASH | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_ahash_type } },
drivers/crypto/talitos.c static struct talitos_alg_template driver_algs[] = { · line 2352
Quoted 9 lines
drivers/crypto/talitos.c +2
-1@@ -2326,7 +2345,8 @@ static struct talitos_alg_template driver_algs[] = { .cra_driver_name = "sha512-talitos", .cra_blocksize = SHA512_BLOCK_SIZE, .cra_flags =CRYPTO_ALG_TYPE_AHASH | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_type = &crypto_ahash_type } },
or this way:
drivers/crypto/talitos.c static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev, · line 2672
Quoted 7 lines
drivers/crypto/talitos.c +1
-0@@ -2647,6 +2667,7 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev, alg->cra_priority =TALITOS_CRA_PRIORITY ; alg->cra_alignmask =0 ; alg->cra_ctxsize =sizeof (struct talitos_ctx ); + alg->cra_flags |=CRYPTO_ALG_KERN_DRIVER_ONLY ; t_alg->dev = dev;
but not both.
My preference is the latter. If you want to do it the former way, rebase on Herbert's latest cryptodev tree, because the new algorithm implementations are missing from this patch.
Kim
PATCH 1/1 Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (3rd attempt)
The added CRYPTO_ALG_KERN_DRIVER_ONLY indicates whether a cipher is only available via a kernel driver. If the cipher implementation might be available by using an instruction set or by porting the kernel code, then it must not be set.
In addition it provides crypto_tfm_alg_flags() to obtain this and other possible flags.
--- drivers/crypto/caam/caamalg.c | 3 +- drivers/crypto/geode-aes.c | 6 +++- drivers/crypto/hifn_795x.c | 3 +- drivers/crypto/ixp4xx_crypto.c | 2 + drivers/crypto/mv_cesa.c | 12 ++++++--- drivers/crypto/n2_core.c | 7 ++++- drivers/crypto/omap-aes.c | 8 +++++- drivers/crypto/omap-sham.c | 4 +++ drivers/crypto/picoxcell_crypto.c | 46 ++++++++++++++++++++++++++++--------- drivers/crypto/s5p-sss.c | 6 +++- drivers/crypto/talitos.c | 1 + include/linux/crypto.h | 10 ++++++++ 12 files changed, 83 insertions(+), 25 deletions(-)
drivers/crypto/caam/caamalg.c +2 -1
@@ -2205,7 +2205,8 @@ static struct caam_crypto_alg *caam_alg_alloc(struct device *ctrldev, alg->cra_blocksize = template->blocksize; alg->cra_alignmask =0 ; alg->cra_ctxsize =sizeof (struct caam_ctx ); - alg->cra_flags =CRYPTO_ALG_ASYNC | template->type; + alg->cra_flags =CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY | + template->type;switch (template->type) {case CRYPTO_ALG_TYPE_ABLKCIPHER : alg->cra_type = &crypto_ablkcipher_type;
drivers/crypto/geode-aes.c +4 -2
@@ -393,7 +393,8 @@ static struct crypto_alg geode_cbc_alg = { .cra_driver_name = "cbc-aes-geode", .cra_priority = 400, .cra_flags =CRYPTO_ALG_TYPE_BLKCIPHER | - CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_init = fallback_init_blk, .cra_exit = fallback_exit_blk, .cra_blocksize = AES_MIN_BLOCK_SIZE,
@@ -479,7 +480,8 @@ static struct crypto_alg geode_ecb_alg = { .cra_driver_name = "ecb-aes-geode", .cra_priority = 400, .cra_flags =CRYPTO_ALG_TYPE_BLKCIPHER | - CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_init = fallback_init_blk, .cra_exit = fallback_exit_blk, .cra_blocksize = AES_MIN_BLOCK_SIZE,
drivers/crypto/hifn_795x.c +2 -1
@@ -2494,7 +2494,8 @@ static int hifn_alg_alloc(struct hifn_device *dev, struct hifn_alg_template *t) t->drv_name, dev->name); alg->alg.cra_priority =300 ; - alg->alg.cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER |CRYPTO_ALG_ASYNC ; + alg->alg.cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ; alg->alg.cra_blocksize = t->bsize; alg->alg.cra_ctxsize =sizeof (struct hifn_context ); alg->alg.cra_alignmask =0 ;
drivers/crypto/ixp4xx_crypto.c +2 -0
@@ -1449,6 +1449,7 @@ static int __init ixp_module_init(void)/* block ciphers */ cra->cra_type = &crypto_ablkcipher_type; cra->cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ;if (!cra->cra_ablkcipher.setkey) cra->cra_ablkcipher.setkey = ablk_setkey;
@@ -1461,6 +1462,7 @@ static int __init ixp_module_init(void)/* authenc */ cra->cra_type = &crypto_aead_type; cra->cra_flags =CRYPTO_ALG_TYPE_AEAD | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ; cra->cra_aead.setkey = aead_setkey; cra->cra_aead.setauthsize = aead_setauthsize;
drivers/crypto/mv_cesa.c +8 -4
@@ -896,7 +896,8 @@ struct crypto_alg mv_aes_alg_ecb = { .cra_name = "ecb(aes)", .cra_driver_name = "mv-ecb-aes", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | + CRYPTO_ALG_KERN_DRIVER_ONLY | CRYPTO_ALG_ASYNC, .cra_blocksize = 16, .cra_ctxsize = sizeof(struct mv_ctx), .cra_alignmask = 0,
@@ -918,7 +919,8 @@ struct crypto_alg mv_aes_alg_cbc = { .cra_name = "cbc(aes)", .cra_driver_name = "mv-cbc-aes", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | + CRYPTO_ALG_KERN_DRIVER_ONLY | CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct mv_ctx), .cra_alignmask = 0,
@@ -950,7 +952,8 @@ struct ahash_alg mv_sha1_alg = { .cra_driver_name = "mv-sha1", .cra_priority = 300, .cra_flags = - CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE, .cra_ctxsize = sizeof(struct mv_tfm_hash_ctx), .cra_init = mv_cra_hash_sha1_init,
@@ -974,7 +977,8 @@ struct ahash_alg mv_hmac_sha1_alg = { .cra_driver_name = "mv-hmac-sha1", .cra_priority = 300, .cra_flags = - CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE, .cra_ctxsize = sizeof(struct mv_tfm_hash_ctx), .cra_init = mv_cra_hash_hmac_sha1_init,
drivers/crypto/n2_core.c +5 -2
@@ -1402,7 +1402,8 @@ static int __devinit __n2_register_one_cipher(const struct n2_cipher_tmpl *tmpl)snprintf (alg->cra_name,CRYPTO_MAX_ALG_NAME ,"%s" , tmpl->name);snprintf (alg->cra_driver_name,CRYPTO_MAX_ALG_NAME ,"%s-n2" , tmpl->drv_name); alg->cra_priority =N2_CRA_PRIORITY ; - alg->cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER |CRYPTO_ALG_ASYNC ; + alg->cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ; alg->cra_blocksize = tmpl->block_size; p->enc_type = tmpl->enc_type; alg->cra_ctxsize =sizeof (struct n2_cipher_context );
@@ -1493,7 +1494,9 @@ static int __devinit __n2_register_one_ahash(const struct n2_hash_tmpl *tmpl)snprintf (base->cra_name,CRYPTO_MAX_ALG_NAME ,"%s" , tmpl->name);snprintf (base->cra_driver_name,CRYPTO_MAX_ALG_NAME ,"%s-n2" , tmpl->name); base->cra_priority =N2_CRA_PRIORITY ; - base->cra_flags =CRYPTO_ALG_TYPE_AHASH |CRYPTO_ALG_NEED_FALLBACK ; + base->cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY | +CRYPTO_ALG_NEED_FALLBACK ; base->cra_blocksize = tmpl->block_size; base->cra_ctxsize =sizeof (struct n2_hash_ctx ); base->cra_module =THIS_MODULE ;
drivers/crypto/omap-aes.c +6 -2
@@ -756,7 +756,9 @@ static struct crypto_alg algs[] = { .cra_name = "ecb(aes)", .cra_driver_name = "ecb-aes-omap", .cra_priority = 100, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct omap_aes_ctx), .cra_alignmask = 0,
@@ -776,7 +778,9 @@ static struct crypto_alg algs[] = { .cra_name = "cbc(aes)", .cra_driver_name = "cbc-aes-omap", .cra_priority = 100, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct omap_aes_ctx), .cra_alignmask = 0,
drivers/crypto/omap-sham.c +4 -0
@@ -953,6 +953,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-sha1", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
@@ -975,6 +976,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-md5", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
@@ -998,6 +1000,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-hmac-sha1", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
@@ -1022,6 +1025,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-hmac-md5", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
drivers/crypto/picoxcell_crypto.c +35 -11
124 lines not on this page · raw message
drivers/crypto/s5p-sss.c +4 -2
@@ -518,7 +518,8 @@ static struct crypto_alg algs[] = { .cra_driver_name = "ecb-aes-s5p", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct s5p_aes_ctx), .cra_alignmask = 0x0f,
@@ -538,7 +539,8 @@ static struct crypto_alg algs[] = { .cra_driver_name = "cbc-aes-s5p", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct s5p_aes_ctx), .cra_alignmask = 0x0f,
drivers/crypto/talitos.c +1 -0
@@ -2647,6 +2647,7 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev, alg->cra_priority =TALITOS_CRA_PRIORITY ; alg->cra_alignmask =0 ; alg->cra_ctxsize =sizeof (struct talitos_ctx ); + alg->cra_flags |=CRYPTO_ALG_KERN_DRIVER_ONLY ; t_alg->dev = dev;
include/linux/crypto.h +10 -0
@@ -75,6 +75,11 @@*/ #define CRYPTO_ALG_INSTANCE 0x00000800 +/* Set this bit if the algorithm provided is hardware accelerated but +* not available to userspace via instruction set or so. +*/ +#define CRYPTO_ALG_KERN_DRIVER_ONLY 0x00001000 +/* * Transform masks and values (for crt_flags). */
@@ -514,6 +519,11 @@ static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm)return tfm->__crt_alg->cra_flags &CRYPTO_ALG_TYPE_MASK ; } +static inline u32 crypto_tfm_alg_flags (struct crypto_tfm *tfm) +{ +return tfm->__crt_alg->cra_flags; +} +static inline unsigned int crypto_tfm_alg_blocksize (struct crypto_tfm *tfm) {return tfm->__crt_alg->cra_blocksize;
Signature · 1 line
1.7.7.3
Herbert Xu
maintainerRe: [PATCH 1/1] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (3rd attempt)
Quoted 9 lines · Nikos Mavrogiannopoulos
The added
CRYPTO_ALG_KERN_DRIVER_ONLYindicates whether a cipher is only available via a kernel driver. If the cipher implementation might be available by using an instruction set or by porting the kernel code, then it must not be set.In addition it provides
crypto_tfm_alg_flags()to obtain this and other possible flags.Signed-off-by Nikos Mavrogiannopoulos <[email protected]>
For future reference a cc to me is appreciated.
include/linux/crypto.h static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm) · line 526
Quoted 5 lines
include/linux/crypto.h +5
-0+static inline u32 crypto_tfm_alg_flags (struct crypto_tfm *tfm) +{ +return tfm->__crt_alg->cra_flags; +} +
Who is going to use this? For one it's not type-safe as we try to avoid directly using crypto_tfm in kernel code.
Otherwise your patch looks OK.
Cheers,
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH 1/1] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (3rd attempt)
Quoted 5 lines · Herbert Xu
Quoted 4 lines · Nikos Mavrogiannopoulos
The added
CRYPTO_ALG_KERN_DRIVER_ONLYindicates whether a cipher is only available via a kernel driver. If the cipher implementation might be available by using an instruction set or by porting the kernel code, then it must not be set.
[...]
Quoted 7 lines
include/linux/crypto.h static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm) · line 526
Quoted 5 lines
include/linux/crypto.h +5
-0+static inline u32 crypto_tfm_alg_flags (struct crypto_tfm *tfm) +{ +return tfm->__crt_alg->cra_flags; +} +Who is going to use this? For one it's not type-safe as we try to avoid directly using
crypto_tfmin kernel code.
I needed this function in order to access the new flag without relying on the structure format. The available crypto_tfm_alg_type() would apply a mask and remove it, thus I added this function.
regards,
Nikos
Herbert Xu
maintainerRe: [PATCH 1/1] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (3rd attempt)
Quoted 4 lines · Nikos Mavrogiannopoulos
I needed this function in order to access the new flag without relying on the structure format. The available
crypto_tfm_alg_type()would apply a mask and remove it, thus I added this function.
Can you show me some example code so I can see how you intend to use it in userspace?
Thanks,
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH 1/1] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (3rd attempt)
Quoted 5 lines · Herbert Xu
Quoted 3 lines
I needed this function in order to access the new flag without relying on the structure format. The available
crypto_tfm_alg_type()would apply a mask and remove it, thus I added this function.Can you show me some example code so I can see how you intend to use it in userspace?
I intend to export the flag to use space as shown below. The idea is to allow userspace libraries decide whether to use the acceleration (i.e. if the CRYPTO_ALG_KERN_DRIVER_ONLY is not given they shouldn't attempt to use the kernel algorithm).
How the flag is exported by cryptodev-linux:
http://repo.or.cz/w/cryptodev-linux.git/blob/aead:/ioctl.c#l716
An example of using it in userspace:
http://repo.or.cz/w/cryptodev-linux.git/blob/aead:/examples/aes.c#l43
regards,
Nikos
Herbert Xu
maintainerRe: [PATCH 1/1] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (3rd attempt)
Quoted 6 lines · Nikos Mavrogiannopoulos
How the flag is exported by cryptodev-linux:
http://repo.or.cz/w/cryptodev-linux.git/blob/aead:/ioctl.c#l716An example of using it in userspace:
http://repo.or.cz/w/cryptodev-linux.git/blob/aead:/examples/aes.c#l43
Actually I was looking for code that uses crypto_tfm_alg_flags function.
Cheers,
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH 1/1] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (3rd attempt)
Quoted 4 lines · Herbert Xu
Quoted 2 lines
How the flag is exported by cryptodev-linux:
http://repo.or.cz/w/cryptodev-linux.git/blob/aead:/ioctl.c#l716Actually I was looking for code that uses
crypto_tfm_alg_flagsfunction.
The code above will use it once it is accepted. Now it accesses directly the flags.
regards,
Nikos
Herbert Xu
maintainerRe: [PATCH 1/1] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (3rd attempt)
Quoted 10 lines · Nikos Mavrogiannopoulos
Quoted 4 lines · Herbert Xu
Quoted 2 lines
How the flag is exported by cryptodev-linux:
http://repo.or.cz/w/cryptodev-linux.git/blob/aead:/ioctl.c#l716Actually I was looking for code that uses
crypto_tfm_alg_flagsfunction.The code above will use it once it is accepted. Now it accesses directly the flags.
Yes but I don't see how you're going to use this since you don't even have a crypto_tfm structure in user-space. So how will your code look like?
Cheers,
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
A message that is not in the archive (sent off-list or not yet received): CAJU7zaJdXa0KU6801fYQd8pSeLRF0Ff=XjQiNd5d-9ngwZ==kg@mail.gmail.com
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [PATCH 1/1] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (4rd attempt)
This patch is the same as the previous but without the inline function.
regards,
Nikos
Quoted 1 line
From
1562727aab0e2fcce87e22a73abe6ea1c7c8975fMon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <[email protected]>
Date: Tue, 1 Nov 2011 13:39:56 +0100
Subject: [PATCH] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag.
The added CRYPTO_ALG_KERN_DRIVER_ONLY indicates whether a cipher is only available via a kernel driver. If the cipher implementation might be available by using an instruction set or by porting the kernel code, then it must not be set.
--- drivers/crypto/caam/caamalg.c | 3 +- drivers/crypto/geode-aes.c | 6 +++- drivers/crypto/hifn_795x.c | 3 +- drivers/crypto/ixp4xx_crypto.c | 2 + drivers/crypto/mv_cesa.c | 12 ++++++--- drivers/crypto/n2_core.c | 7 ++++- drivers/crypto/omap-aes.c | 8 +++++- drivers/crypto/omap-sham.c | 4 +++ drivers/crypto/picoxcell_crypto.c | 46 ++++++++++++++++++++++++++++--------- drivers/crypto/s5p-sss.c | 6 +++- drivers/crypto/talitos.c | 1 + include/linux/crypto.h | 5 ++++ 12 files changed, 78 insertions(+), 25 deletions(-)
drivers/crypto/caam/caamalg.c +2 -1
@@ -2205,7 +2205,8 @@ static struct caam_crypto_alg *caam_alg_alloc(struct device *ctrldev, alg->cra_blocksize = template->blocksize; alg->cra_alignmask =0 ; alg->cra_ctxsize =sizeof (struct caam_ctx ); - alg->cra_flags =CRYPTO_ALG_ASYNC | template->type; + alg->cra_flags =CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY | + template->type;switch (template->type) {case CRYPTO_ALG_TYPE_ABLKCIPHER : alg->cra_type = &crypto_ablkcipher_type;
drivers/crypto/geode-aes.c +4 -2
@@ -393,7 +393,8 @@ static struct crypto_alg geode_cbc_alg = { .cra_driver_name = "cbc-aes-geode", .cra_priority = 400, .cra_flags =CRYPTO_ALG_TYPE_BLKCIPHER | - CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_init = fallback_init_blk, .cra_exit = fallback_exit_blk, .cra_blocksize = AES_MIN_BLOCK_SIZE,
@@ -479,7 +480,8 @@ static struct crypto_alg geode_ecb_alg = { .cra_driver_name = "ecb-aes-geode", .cra_priority = 400, .cra_flags =CRYPTO_ALG_TYPE_BLKCIPHER | - CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_init = fallback_init_blk, .cra_exit = fallback_exit_blk, .cra_blocksize = AES_MIN_BLOCK_SIZE,
drivers/crypto/hifn_795x.c +2 -1
@@ -2494,7 +2494,8 @@ static int hifn_alg_alloc(struct hifn_device *dev, struct hifn_alg_template *t) t->drv_name, dev->name); alg->alg.cra_priority =300 ; - alg->alg.cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER |CRYPTO_ALG_ASYNC ; + alg->alg.cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ; alg->alg.cra_blocksize = t->bsize; alg->alg.cra_ctxsize =sizeof (struct hifn_context ); alg->alg.cra_alignmask =0 ;
drivers/crypto/ixp4xx_crypto.c +2 -0
@@ -1449,6 +1449,7 @@ static int __init ixp_module_init(void)/* block ciphers */ cra->cra_type = &crypto_ablkcipher_type; cra->cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ;if (!cra->cra_ablkcipher.setkey) cra->cra_ablkcipher.setkey = ablk_setkey;
@@ -1461,6 +1462,7 @@ static int __init ixp_module_init(void)/* authenc */ cra->cra_type = &crypto_aead_type; cra->cra_flags =CRYPTO_ALG_TYPE_AEAD | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ; cra->cra_aead.setkey = aead_setkey; cra->cra_aead.setauthsize = aead_setauthsize;
drivers/crypto/mv_cesa.c +8 -4
@@ -896,7 +896,8 @@ struct crypto_alg mv_aes_alg_ecb = { .cra_name = "ecb(aes)", .cra_driver_name = "mv-ecb-aes", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | + CRYPTO_ALG_KERN_DRIVER_ONLY | CRYPTO_ALG_ASYNC, .cra_blocksize = 16, .cra_ctxsize = sizeof(struct mv_ctx), .cra_alignmask = 0,
@@ -918,7 +919,8 @@ struct crypto_alg mv_aes_alg_cbc = { .cra_name = "cbc(aes)", .cra_driver_name = "mv-cbc-aes", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | + CRYPTO_ALG_KERN_DRIVER_ONLY | CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct mv_ctx), .cra_alignmask = 0,
@@ -950,7 +952,8 @@ struct ahash_alg mv_sha1_alg = { .cra_driver_name = "mv-sha1", .cra_priority = 300, .cra_flags = - CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE, .cra_ctxsize = sizeof(struct mv_tfm_hash_ctx), .cra_init = mv_cra_hash_sha1_init,
@@ -974,7 +977,8 @@ struct ahash_alg mv_hmac_sha1_alg = { .cra_driver_name = "mv-hmac-sha1", .cra_priority = 300, .cra_flags = - CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, +CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE, .cra_ctxsize = sizeof(struct mv_tfm_hash_ctx), .cra_init = mv_cra_hash_hmac_sha1_init,
drivers/crypto/n2_core.c +5 -2
@@ -1402,7 +1402,8 @@ static int __devinit __n2_register_one_cipher(const struct n2_cipher_tmpl *tmpl)snprintf (alg->cra_name,CRYPTO_MAX_ALG_NAME ,"%s" , tmpl->name);snprintf (alg->cra_driver_name,CRYPTO_MAX_ALG_NAME ,"%s-n2" , tmpl->drv_name); alg->cra_priority =N2_CRA_PRIORITY ; - alg->cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER |CRYPTO_ALG_ASYNC ; + alg->cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC ; alg->cra_blocksize = tmpl->block_size; p->enc_type = tmpl->enc_type; alg->cra_ctxsize =sizeof (struct n2_cipher_context );
@@ -1493,7 +1494,9 @@ static int __devinit __n2_register_one_ahash(const struct n2_hash_tmpl *tmpl)snprintf (base->cra_name,CRYPTO_MAX_ALG_NAME ,"%s" , tmpl->name);snprintf (base->cra_driver_name,CRYPTO_MAX_ALG_NAME ,"%s-n2" , tmpl->name); base->cra_priority =N2_CRA_PRIORITY ; - base->cra_flags =CRYPTO_ALG_TYPE_AHASH |CRYPTO_ALG_NEED_FALLBACK ; + base->cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY | +CRYPTO_ALG_NEED_FALLBACK ; base->cra_blocksize = tmpl->block_size; base->cra_ctxsize =sizeof (struct n2_hash_ctx ); base->cra_module =THIS_MODULE ;
drivers/crypto/omap-aes.c +6 -2
@@ -756,7 +756,9 @@ static struct crypto_alg algs[] = { .cra_name = "ecb(aes)", .cra_driver_name = "ecb-aes-omap", .cra_priority = 100, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct omap_aes_ctx), .cra_alignmask = 0,
@@ -776,7 +778,9 @@ static struct crypto_alg algs[] = { .cra_name = "cbc(aes)", .cra_driver_name = "cbc-aes-omap", .cra_priority = 100, - .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | +CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct omap_aes_ctx), .cra_alignmask = 0,
drivers/crypto/omap-sham.c +4 -0
@@ -953,6 +953,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-sha1", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
@@ -975,6 +976,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-md5", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
@@ -998,6 +1000,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-hmac-sha1", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
@@ -1022,6 +1025,7 @@ static struct ahash_alg algs[] = { .cra_driver_name = "omap-hmac-md5", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_AHASH | +CRYPTO_ALG_KERN_DRIVER_ONLY |CRYPTO_ALG_ASYNC | CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA1_BLOCK_SIZE,
drivers/crypto/picoxcell_crypto.c +35 -11
124 lines not on this page · raw message
drivers/crypto/s5p-sss.c +4 -2
@@ -518,7 +518,8 @@ static struct crypto_alg algs[] = { .cra_driver_name = "ecb-aes-s5p", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct s5p_aes_ctx), .cra_alignmask = 0x0f,
@@ -538,7 +539,8 @@ static struct crypto_alg algs[] = { .cra_driver_name = "cbc-aes-s5p", .cra_priority = 100, .cra_flags =CRYPTO_ALG_TYPE_ABLKCIPHER | - CRYPTO_ALG_ASYNC, +CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct s5p_aes_ctx), .cra_alignmask = 0x0f,
drivers/crypto/talitos.c +1 -0
@@ -2648,6 +2648,7 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev, alg->cra_priority =TALITOS_CRA_PRIORITY ; alg->cra_alignmask =0 ; alg->cra_ctxsize =sizeof (struct talitos_ctx ); + alg->cra_flags |=CRYPTO_ALG_KERN_DRIVER_ONLY ; t_alg->dev = dev;
include/linux/crypto.h +5 -0
@@ -75,6 +75,11 @@*/ #define CRYPTO_ALG_INSTANCE 0x00000800 +/* Set this bit if the algorithm provided is hardware accelerated but +* not available to userspace via instruction set or so. +*/ +#define CRYPTO_ALG_KERN_DRIVER_ONLY 0x00001000 +/* * Transform masks and values (for crt_flags). */
Signature · 1 line
1.7.7.3
Herbert Xu
maintainerRe: [PATCH 1/1] Added CRYPTO_ALG_KERN_DRIVER_ONLY flag (4rd attempt)
Quoted 1 line · Nikos Mavrogiannopoulos
This patch is the same as the previous but without the inline function.
Patch applied. Thanks!
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt