diff options
author | Kasoju Mallikarjun <mkasoju@nvidia.com> | 2011-12-14 22:57:25 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2012-03-22 01:17:19 -0700 |
commit | 2a42811a19635da92fc39896a9c89b6b2cad020a (patch) | |
tree | 34c0572bf23b4d881e8eac2b9bdc85ee583be3a1 /drivers/crypto/tegra-se.c | |
parent | 3e5b0e3b92cd38db796e5637e84e9a893b44b91a (diff) |
crypto: tegra-se: Added a check for valid key size
Check for valid key size before setting the key.
Bug 915210
Change-Id: I081e2af9505ea89719d447b4b0ca2b0177860d09
Reviewed-on: http://git-master/r/70046
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Mallikarjun Kasoju <mkasoju@nvidia.com>
Tested-by: Mallikarjun Kasoju <mkasoju@nvidia.com>
Reviewed-by: Thomas Cherry <tcherry@nvidia.com>
Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
Rebase-Id: R2df39982dd9155e00be3390c6fdd5e249244deff
Diffstat (limited to 'drivers/crypto/tegra-se.c')
-rw-r--r-- | drivers/crypto/tegra-se.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/crypto/tegra-se.c b/drivers/crypto/tegra-se.c index fea3f456a0b0..4083d155c874 100644 --- a/drivers/crypto/tegra-se.c +++ b/drivers/crypto/tegra-se.c @@ -955,6 +955,13 @@ static int tegra_se_aes_setkey(struct crypto_ablkcipher *tfm, return -EINVAL; } + if ((keylen != TEGRA_SE_KEY_128_SIZE) && + (keylen != TEGRA_SE_KEY_192_SIZE) && + (keylen != TEGRA_SE_KEY_256_SIZE)) { + dev_err(se_dev->dev, "invalid key size"); + return -EINVAL; + } + if (key) { if (!ctx->slot || (ctx->slot && ctx->slot->slot_num == ssk_slot.slot_num)) { @@ -1486,6 +1493,13 @@ int tegra_se_aes_cmac_setkey(struct crypto_ahash *tfm, const u8 *key, return -EINVAL; } + if ((keylen != TEGRA_SE_KEY_128_SIZE) && + (keylen != TEGRA_SE_KEY_192_SIZE) && + (keylen != TEGRA_SE_KEY_256_SIZE)) { + dev_err(se_dev->dev, "invalid key size"); + return -EINVAL; + } + if (key) { if (!ctx->slot || (ctx->slot && ctx->slot->slot_num == ssk_slot.slot_num)) { @@ -2144,7 +2158,7 @@ static int tegra_se_lp_encrypt_context_data(struct tegra_se_dev *se_dev, dst_ll = (struct tegra_se_ll *)(se_dev->dst_ll_buf + 1); src_ll->addr = se_dev->ctx_save_buf_adr + context_offset; src_ll->data_len = data_size; - dst_ll->addr = se_dev->ctx_save_buf_adr + context_offset;; + dst_ll->addr = se_dev->ctx_save_buf_adr + context_offset; dst_ll->data_len = data_size; se_writel(se_dev, SE_CONTEXT_SAVE_SRC(MEM), |