diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2018-03-28 15:27:55 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-03-28 15:27:54 -0700 |
| commit | cce73b6eb4ffee61460fea83a7329673c1c8a3c8 (patch) | |
| tree | e84d5b02a505ee58da3a96421b2377f2f49d19d7 | |
| parent | 4494f37ab318139519f4116e3e48d487223ddb88 (diff) | |
| parent | 7fcca62cb3fb94d2d2870f7f7cbd2084e0820a3b (diff) | |
Merge "crypto: msm: reset pointer before returning from the function"
| -rw-r--r-- | drivers/crypto/msm/qcedev.c | 22 | ||||
| -rw-r--r-- | drivers/crypto/msm/qcrypto.c | 4 |
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; |
