On Mon, 12 Aug 2019 at 22:38, Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > > On Mon, Aug 12, 2019 at 05:53:18PM +0300, Ard Biesheuvel wrote: > > + switch (type) { > > + case CRYPTO_ALG_TYPE_BLKCIPHER: > > + skcipher_inst = kzalloc(sizeof(*skcipher_inst) + > > + sizeof(*ictx), GFP_KERNEL); > > + if (!skcipher_inst) > > + return -ENOMEM; > > + inst = skcipher_crypto_instance(skcipher_inst); > > + base = &skcipher_inst->alg.base; > > + ictx = crypto_instance_ctx(inst); > > + > > + /* Block cipher, e.g. "cbc(aes)" */ > > + crypto_set_skcipher_spawn(&ictx->u.skcipher_spawn, inst); > > + err = crypto_grab_skcipher(&ictx->u.skcipher_spawn, > > + inner_cipher_name, 0, > > + crypto_requires_sync(algt->type, > > + algt->mask)); > > + if (err) > > + goto out_free_inst; > > This should say "Symmetric cipher", not "Block cipher". > > > + > > + if (!parse_cipher_name(essiv_cipher_name, block_base->cra_name)) { > > + pr_warn("Failed to parse ESSIV cipher name from skcipher cra_name\n"); > > + goto out_drop_skcipher; > > + } > > This is missing: > > err = -EINVAL; > > > + if (type == CRYPTO_ALG_TYPE_BLKCIPHER) { > > + skcipher_inst->alg.setkey = essiv_skcipher_setkey; > > + skcipher_inst->alg.encrypt = essiv_skcipher_encrypt; > > + skcipher_inst->alg.decrypt = essiv_skcipher_decrypt; > > + skcipher_inst->alg.init = essiv_skcipher_init_tfm; > > + skcipher_inst->alg.exit = essiv_skcipher_exit_tfm; > > + > > + skcipher_inst->alg.min_keysize = crypto_skcipher_alg_min_keysize(skcipher_alg); > > + skcipher_inst->alg.max_keysize = crypto_skcipher_alg_max_keysize(skcipher_alg); > > + skcipher_inst->alg.ivsize = crypto_skcipher_alg_ivsize(skcipher_alg); > > + skcipher_inst->alg.chunksize = crypto_skcipher_alg_chunksize(skcipher_alg); > > + skcipher_inst->alg.walksize = crypto_skcipher_alg_walksize(skcipher_alg); > > + > > + skcipher_inst->free = essiv_skcipher_free_instance; > > + > > + err = skcipher_register_instance(tmpl, skcipher_inst); > > + } else { > > + aead_inst->alg.setkey = essiv_aead_setkey; > > + aead_inst->alg.setauthsize = essiv_aead_setauthsize; > > + aead_inst->alg.encrypt = essiv_aead_encrypt; > > + aead_inst->alg.decrypt = essiv_aead_decrypt; > > + aead_inst->alg.init = essiv_aead_init_tfm; > > + aead_inst->alg.exit = essiv_aead_exit_tfm; > > + > > + aead_inst->alg.ivsize = crypto_aead_alg_ivsize(aead_alg); > > + aead_inst->alg.maxauthsize = crypto_aead_alg_maxauthsize(aead_alg); > > + aead_inst->alg.chunksize = crypto_aead_alg_chunksize(aead_alg); > > + > > + aead_inst->free = essiv_aead_free_instance; > > + > > + err = aead_register_instance(tmpl, aead_inst); > > + } > > 'ivsize' is already in a variable, so could use > > skcipher_inst->alg.ivsize = ivsize; > > and > aead_inst->alg.ivsize = ivsize; > Thanks Eric. These will all be fixed in the next respin.