mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 14:19:16 +00:00
crypto: padlock-sha - Use init_tfm/exit_tfm interface
This patch switches padlock-sha over to the new init_tfm/exit_tfm interface as opposed to cra_init/cra_exit. This way the shash API can make sure that descsize does not exceed the maximum. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Reviewed-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
fbce6be5ae
commit
9689569394
1 changed files with 10 additions and 16 deletions
|
@ -190,13 +190,11 @@ static int padlock_sha256_final(struct shash_desc *desc, u8 *out)
|
||||||
return padlock_sha256_finup(desc, buf, 0, out);
|
return padlock_sha256_finup(desc, buf, 0, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int padlock_cra_init(struct crypto_tfm *tfm)
|
static int padlock_init_tfm(struct crypto_shash *hash)
|
||||||
{
|
{
|
||||||
struct crypto_shash *hash = __crypto_shash_cast(tfm);
|
const char *fallback_driver_name = crypto_shash_alg_name(hash);
|
||||||
const char *fallback_driver_name = crypto_tfm_alg_name(tfm);
|
struct padlock_sha_ctx *ctx = crypto_shash_ctx(hash);
|
||||||
struct padlock_sha_ctx *ctx = crypto_tfm_ctx(tfm);
|
|
||||||
struct crypto_shash *fallback_tfm;
|
struct crypto_shash *fallback_tfm;
|
||||||
int err = -ENOMEM;
|
|
||||||
|
|
||||||
/* Allocate a fallback and abort if it failed. */
|
/* Allocate a fallback and abort if it failed. */
|
||||||
fallback_tfm = crypto_alloc_shash(fallback_driver_name, 0,
|
fallback_tfm = crypto_alloc_shash(fallback_driver_name, 0,
|
||||||
|
@ -204,21 +202,17 @@ static int padlock_cra_init(struct crypto_tfm *tfm)
|
||||||
if (IS_ERR(fallback_tfm)) {
|
if (IS_ERR(fallback_tfm)) {
|
||||||
printk(KERN_WARNING PFX "Fallback driver '%s' could not be loaded!\n",
|
printk(KERN_WARNING PFX "Fallback driver '%s' could not be loaded!\n",
|
||||||
fallback_driver_name);
|
fallback_driver_name);
|
||||||
err = PTR_ERR(fallback_tfm);
|
return PTR_ERR(fallback_tfm);
|
||||||
goto out;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->fallback = fallback_tfm;
|
ctx->fallback = fallback_tfm;
|
||||||
hash->descsize += crypto_shash_descsize(fallback_tfm);
|
hash->descsize += crypto_shash_descsize(fallback_tfm);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out:
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void padlock_cra_exit(struct crypto_tfm *tfm)
|
static void padlock_exit_tfm(struct crypto_shash *hash)
|
||||||
{
|
{
|
||||||
struct padlock_sha_ctx *ctx = crypto_tfm_ctx(tfm);
|
struct padlock_sha_ctx *ctx = crypto_shash_ctx(hash);
|
||||||
|
|
||||||
crypto_free_shash(ctx->fallback);
|
crypto_free_shash(ctx->fallback);
|
||||||
}
|
}
|
||||||
|
@ -231,6 +225,8 @@ static struct shash_alg sha1_alg = {
|
||||||
.final = padlock_sha1_final,
|
.final = padlock_sha1_final,
|
||||||
.export = padlock_sha_export,
|
.export = padlock_sha_export,
|
||||||
.import = padlock_sha_import,
|
.import = padlock_sha_import,
|
||||||
|
.init_tfm = padlock_init_tfm,
|
||||||
|
.exit_tfm = padlock_exit_tfm,
|
||||||
.descsize = sizeof(struct padlock_sha_desc),
|
.descsize = sizeof(struct padlock_sha_desc),
|
||||||
.statesize = sizeof(struct sha1_state),
|
.statesize = sizeof(struct sha1_state),
|
||||||
.base = {
|
.base = {
|
||||||
|
@ -241,8 +237,6 @@ static struct shash_alg sha1_alg = {
|
||||||
.cra_blocksize = SHA1_BLOCK_SIZE,
|
.cra_blocksize = SHA1_BLOCK_SIZE,
|
||||||
.cra_ctxsize = sizeof(struct padlock_sha_ctx),
|
.cra_ctxsize = sizeof(struct padlock_sha_ctx),
|
||||||
.cra_module = THIS_MODULE,
|
.cra_module = THIS_MODULE,
|
||||||
.cra_init = padlock_cra_init,
|
|
||||||
.cra_exit = padlock_cra_exit,
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -254,6 +248,8 @@ static struct shash_alg sha256_alg = {
|
||||||
.final = padlock_sha256_final,
|
.final = padlock_sha256_final,
|
||||||
.export = padlock_sha_export,
|
.export = padlock_sha_export,
|
||||||
.import = padlock_sha_import,
|
.import = padlock_sha_import,
|
||||||
|
.init_tfm = padlock_init_tfm,
|
||||||
|
.exit_tfm = padlock_exit_tfm,
|
||||||
.descsize = sizeof(struct padlock_sha_desc),
|
.descsize = sizeof(struct padlock_sha_desc),
|
||||||
.statesize = sizeof(struct sha256_state),
|
.statesize = sizeof(struct sha256_state),
|
||||||
.base = {
|
.base = {
|
||||||
|
@ -264,8 +260,6 @@ static struct shash_alg sha256_alg = {
|
||||||
.cra_blocksize = SHA256_BLOCK_SIZE,
|
.cra_blocksize = SHA256_BLOCK_SIZE,
|
||||||
.cra_ctxsize = sizeof(struct padlock_sha_ctx),
|
.cra_ctxsize = sizeof(struct padlock_sha_ctx),
|
||||||
.cra_module = THIS_MODULE,
|
.cra_module = THIS_MODULE,
|
||||||
.cra_init = padlock_cra_init,
|
|
||||||
.cra_exit = padlock_cra_exit,
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue