Skip to content

Commit

Permalink
crypto: shash - Move finup/digest null checks to registration time
Browse files Browse the repository at this point in the history
This patch moves the run-time null finup/digest checks to the
shash_prepare_alg function which is run at registration time.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
  • Loading branch information
herbertx committed Jul 11, 2009
1 parent 99d27e1 commit 8267ada
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions crypto/shash.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,7 @@ int crypto_shash_finup(struct shash_desc *desc, const u8 *data,
struct shash_alg *shash = crypto_shash_alg(tfm);
unsigned long alignmask = crypto_shash_alignmask(tfm);

if (((unsigned long)data | (unsigned long)out) & alignmask ||
!shash->finup)
if (((unsigned long)data | (unsigned long)out) & alignmask)
return shash_finup_unaligned(desc, data, len, out);

return shash->finup(desc, data, len, out);
Expand All @@ -164,8 +163,7 @@ int crypto_shash_digest(struct shash_desc *desc, const u8 *data,
struct shash_alg *shash = crypto_shash_alg(tfm);
unsigned long alignmask = crypto_shash_alignmask(tfm);

if (((unsigned long)data | (unsigned long)out) & alignmask ||
!shash->digest)
if (((unsigned long)data | (unsigned long)out) & alignmask)
return shash_digest_unaligned(desc, data, len, out);

return shash->digest(desc, data, len, out);
Expand Down Expand Up @@ -488,6 +486,10 @@ static int shash_prepare_alg(struct shash_alg *alg)
base->cra_flags &= ~CRYPTO_ALG_TYPE_MASK;
base->cra_flags |= CRYPTO_ALG_TYPE_SHASH;

if (!alg->finup)
alg->finup = shash_finup_unaligned;
if (!alg->digest)
alg->digest = shash_digest_unaligned;
if (!alg->import)
alg->import = shash_no_import;
if (!alg->export)
Expand Down

0 comments on commit 8267ada

Please sign in to comment.