summaryrefslogtreecommitdiff
path: root/drivers/crypto
diff options
context:
space:
mode:
authorKasoju Mallikarjun <mkasoju@nvidia.com>2011-12-14 22:57:25 +0530
committerVarun Wadekar <vwadekar@nvidia.com>2011-12-21 12:06:24 +0530
commiteba78584106babe543ee7625652ef9760d3fc23f (patch)
tree8f5455bea15f84d6dd2d381c708fdff2d72e1875 /drivers/crypto
parentac5eaff3483fdf4fe57a233cb4118cbfea622b4b (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>
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/tegra-se.c16
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),