diff options
Diffstat (limited to 'security/integrity/evm/evm_crypto.c')
-rw-r--r-- | security/integrity/evm/evm_crypto.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c index 847a2d7dff17..3b9f5a080e4f 100644 --- a/security/integrity/evm/evm_crypto.c +++ b/security/integrity/evm/evm_crypto.c | |||
@@ -52,6 +52,14 @@ static struct shash_desc *init_desc(const char type) | |||
52 | *tfm = NULL; | 52 | *tfm = NULL; |
53 | return ERR_PTR(rc); | 53 | return ERR_PTR(rc); |
54 | } | 54 | } |
55 | if (type == EVM_XATTR_HMAC) { | ||
56 | rc = crypto_shash_setkey(*tfm, evmkey, evmkey_len); | ||
57 | if (rc) { | ||
58 | crypto_free_shash(*tfm); | ||
59 | *tfm = NULL; | ||
60 | return ERR_PTR(rc); | ||
61 | } | ||
62 | } | ||
55 | } | 63 | } |
56 | 64 | ||
57 | desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(*tfm), | 65 | desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(*tfm), |
@@ -62,14 +70,7 @@ static struct shash_desc *init_desc(const char type) | |||
62 | desc->tfm = *tfm; | 70 | desc->tfm = *tfm; |
63 | desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP; | 71 | desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP; |
64 | 72 | ||
65 | if (type == EVM_XATTR_HMAC) { | ||
66 | rc = crypto_shash_setkey(*tfm, evmkey, evmkey_len); | ||
67 | if (rc) | ||
68 | goto out; | ||
69 | } | ||
70 | |||
71 | rc = crypto_shash_init(desc); | 73 | rc = crypto_shash_init(desc); |
72 | out: | ||
73 | if (rc) { | 74 | if (rc) { |
74 | kfree(desc); | 75 | kfree(desc); |
75 | return ERR_PTR(rc); | 76 | return ERR_PTR(rc); |