mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 07:01:57 +00:00
evm: key must be set once during initialization
On multi-core systems, setting of the key before every caclculation, causes invalid HMAC calculation for other tfm users, because internal state (ipad, opad) can be invalid before set key call returns. It needs to be set only once during initialization. Signed-off-by: Dmitry Kasatkin <dmitry.kasatkin@intel.com> Acked-by: Mimi Zohar <zohar@us.ibm.com> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
parent
511585a28e
commit
d21b594518
@ -41,6 +41,12 @@ static struct shash_desc *init_desc(void)
|
||||
hmac_tfm = NULL;
|
||||
return ERR_PTR(rc);
|
||||
}
|
||||
rc = crypto_shash_setkey(hmac_tfm, evmkey, evmkey_len);
|
||||
if (rc) {
|
||||
crypto_free_shash(hmac_tfm);
|
||||
hmac_tfm = NULL;
|
||||
return ERR_PTR(rc);
|
||||
}
|
||||
}
|
||||
|
||||
desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(hmac_tfm),
|
||||
@ -51,11 +57,7 @@ static struct shash_desc *init_desc(void)
|
||||
desc->tfm = hmac_tfm;
|
||||
desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
|
||||
|
||||
rc = crypto_shash_setkey(hmac_tfm, evmkey, evmkey_len);
|
||||
if (rc)
|
||||
goto out;
|
||||
rc = crypto_shash_init(desc);
|
||||
out:
|
||||
if (rc) {
|
||||
kfree(desc);
|
||||
return ERR_PTR(rc);
|
||||
|
Loading…
Reference in New Issue
Block a user