ubifs: use crypto_shash_tfm_digest()
Instead of manually allocating a 'struct shash_desc' on the stack and calling crypto_shash_digest(), switch to using the new helper function crypto_shash_tfm_digest() which does this for us. Cc: linux-mtd@lists.infradead.org Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
ea794db264
commit
f80df38512
|
@ -31,15 +31,9 @@ int __ubifs_node_calc_hash(const struct ubifs_info *c, const void *node,
|
||||||
u8 *hash)
|
u8 *hash)
|
||||||
{
|
{
|
||||||
const struct ubifs_ch *ch = node;
|
const struct ubifs_ch *ch = node;
|
||||||
SHASH_DESC_ON_STACK(shash, c->hash_tfm);
|
|
||||||
int err;
|
|
||||||
|
|
||||||
shash->tfm = c->hash_tfm;
|
return crypto_shash_tfm_digest(c->hash_tfm, node, le32_to_cpu(ch->len),
|
||||||
|
hash);
|
||||||
err = crypto_shash_digest(shash, node, le32_to_cpu(ch->len), hash);
|
|
||||||
if (err < 0)
|
|
||||||
return err;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,15 +47,7 @@ int __ubifs_node_calc_hash(const struct ubifs_info *c, const void *node,
|
||||||
static int ubifs_hash_calc_hmac(const struct ubifs_info *c, const u8 *hash,
|
static int ubifs_hash_calc_hmac(const struct ubifs_info *c, const u8 *hash,
|
||||||
u8 *hmac)
|
u8 *hmac)
|
||||||
{
|
{
|
||||||
SHASH_DESC_ON_STACK(shash, c->hmac_tfm);
|
return crypto_shash_tfm_digest(c->hmac_tfm, hash, c->hash_len, hmac);
|
||||||
int err;
|
|
||||||
|
|
||||||
shash->tfm = c->hmac_tfm;
|
|
||||||
|
|
||||||
err = crypto_shash_digest(shash, hash, c->hash_len, hmac);
|
|
||||||
if (err < 0)
|
|
||||||
return err;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -68,12 +68,9 @@ static int mst_node_check_hash(const struct ubifs_info *c,
|
||||||
u8 calc[UBIFS_MAX_HASH_LEN];
|
u8 calc[UBIFS_MAX_HASH_LEN];
|
||||||
const void *node = mst;
|
const void *node = mst;
|
||||||
|
|
||||||
SHASH_DESC_ON_STACK(shash, c->hash_tfm);
|
crypto_shash_tfm_digest(c->hash_tfm, node + sizeof(struct ubifs_ch),
|
||||||
|
UBIFS_MST_NODE_SZ - sizeof(struct ubifs_ch),
|
||||||
shash->tfm = c->hash_tfm;
|
calc);
|
||||||
|
|
||||||
crypto_shash_digest(shash, node + sizeof(struct ubifs_ch),
|
|
||||||
UBIFS_MST_NODE_SZ - sizeof(struct ubifs_ch), calc);
|
|
||||||
|
|
||||||
if (ubifs_check_hash(c, expected, calc))
|
if (ubifs_check_hash(c, expected, calc))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
|
@ -558,7 +558,7 @@ static int is_last_bud(struct ubifs_info *c, struct ubifs_bud *bud)
|
||||||
return data == 0xFFFFFFFF;
|
return data == 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* authenticate_sleb_hash and authenticate_sleb_hmac are split out for stack usage */
|
/* authenticate_sleb_hash is split out for stack usage */
|
||||||
static int authenticate_sleb_hash(struct ubifs_info *c, struct shash_desc *log_hash, u8 *hash)
|
static int authenticate_sleb_hash(struct ubifs_info *c, struct shash_desc *log_hash, u8 *hash)
|
||||||
{
|
{
|
||||||
SHASH_DESC_ON_STACK(hash_desc, c->hash_tfm);
|
SHASH_DESC_ON_STACK(hash_desc, c->hash_tfm);
|
||||||
|
@ -569,15 +569,6 @@ static int authenticate_sleb_hash(struct ubifs_info *c, struct shash_desc *log_h
|
||||||
return crypto_shash_final(hash_desc, hash);
|
return crypto_shash_final(hash_desc, hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int authenticate_sleb_hmac(struct ubifs_info *c, u8 *hash, u8 *hmac)
|
|
||||||
{
|
|
||||||
SHASH_DESC_ON_STACK(hmac_desc, c->hmac_tfm);
|
|
||||||
|
|
||||||
hmac_desc->tfm = c->hmac_tfm;
|
|
||||||
|
|
||||||
return crypto_shash_digest(hmac_desc, hash, c->hash_len, hmac);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* authenticate_sleb - authenticate one scan LEB
|
* authenticate_sleb - authenticate one scan LEB
|
||||||
* @c: UBIFS file-system description object
|
* @c: UBIFS file-system description object
|
||||||
|
@ -624,7 +615,8 @@ static int authenticate_sleb(struct ubifs_info *c, struct ubifs_scan_leb *sleb,
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
err = authenticate_sleb_hmac(c, hash, hmac);
|
err = crypto_shash_tfm_digest(c->hmac_tfm, hash,
|
||||||
|
c->hash_len, hmac);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue