summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-03-28 15:27:55 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-03-28 15:27:54 -0700
commitcce73b6eb4ffee61460fea83a7329673c1c8a3c8 (patch)
treee84d5b02a505ee58da3a96421b2377f2f49d19d7
parent4494f37ab318139519f4116e3e48d487223ddb88 (diff)
parent7fcca62cb3fb94d2d2870f7f7cbd2084e0820a3b (diff)
Merge "crypto: msm: reset pointer before returning from the function"
-rw-r--r--drivers/crypto/msm/qcedev.c22
-rw-r--r--drivers/crypto/msm/qcrypto.c4
2 files changed, 17 insertions, 9 deletions
diff --git a/drivers/crypto/msm/qcedev.c b/drivers/crypto/msm/qcedev.c
index a55f236961b8..953159c66159 100644
--- a/drivers/crypto/msm/qcedev.c
+++ b/drivers/crypto/msm/qcedev.c
@@ -1,6 +1,6 @@
/* Qualcomm CE device driver.
*
- * Copyright (c) 2010-2017, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2010-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -843,6 +843,7 @@ static int qcedev_sha_final(struct qcedev_async_req *qcedev_areq,
memset(&handle->sha_ctxt.trailing_buf[0], 0, 64);
kzfree(k_buf_src);
+ qcedev_areq->sha_req.sreq.src = NULL;
return err;
}
@@ -1012,6 +1013,7 @@ static int qcedev_hmac_get_ohash(struct qcedev_async_req *qcedev_areq,
handle->sha_ctxt.first_blk = 0;
kzfree(k_src);
+ qcedev_areq->sha_req.sreq.src = NULL;
return err;
}
@@ -1166,8 +1168,10 @@ static int qcedev_vbuf_ablk_cipher_max_xfer(struct qcedev_async_req *areq,
if (err == 0 && copy_to_user(
(void __user *)creq->vbuf.dst[dst_i].vaddr,
(k_align_dst + byteoffset),
- creq->vbuf.dst[dst_i].len))
- return -EFAULT;
+ creq->vbuf.dst[dst_i].len)) {
+ err = -EFAULT;
+ goto exit;
+ }
k_align_dst += creq->vbuf.dst[dst_i].len +
byteoffset;
@@ -1176,9 +1180,11 @@ static int qcedev_vbuf_ablk_cipher_max_xfer(struct qcedev_async_req *areq,
} else {
if (err == 0 && copy_to_user(
(void __user *)creq->vbuf.dst[dst_i].vaddr,
- (k_align_dst + byteoffset),
- creq->data_len))
- return -EFAULT;
+ (k_align_dst + byteoffset),
+ creq->data_len)) {
+ err = -EFAULT;
+ goto exit;
+ }
k_align_dst += creq->data_len;
creq->vbuf.dst[dst_i].len -= creq->data_len;
@@ -1187,7 +1193,9 @@ static int qcedev_vbuf_ablk_cipher_max_xfer(struct qcedev_async_req *areq,
}
}
*di = dst_i;
-
+exit:
+ areq->cipher_req.creq.src = NULL;
+ areq->cipher_req.creq.dst = NULL;
return err;
};
diff --git a/drivers/crypto/msm/qcrypto.c b/drivers/crypto/msm/qcrypto.c
index f38fc422b35e..2bfd0525c529 100644
--- a/drivers/crypto/msm/qcrypto.c
+++ b/drivers/crypto/msm/qcrypto.c
@@ -1,6 +1,6 @@
/* Qualcomm Crypto driver
*
- * Copyright (c) 2010-2017, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2010-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -3923,7 +3923,7 @@ static int _sha_hmac_setkey(struct crypto_ahash *tfm, const u8 *key,
struct qcrypto_sha_ctx *sha_ctx = crypto_tfm_ctx(&tfm->base);
uint8_t *in_buf;
int ret = 0;
- struct scatterlist sg;
+ struct scatterlist sg = {0};
struct ahash_request *ahash_req;
struct completion ahash_req_complete;