Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0acaefac authored by Zhen Kong's avatar Zhen Kong
Browse files

crypto: msm: reset pointer before returning from the function



Reset cipher_req.creq.dst and cipher_req.creq.src pointer to NULL
before returning from the function, and initialize scatterlist
variable before using it.

Change-Id: I5d5eee06a5213a05b20bf459ef0bf0c433fadbdd
Signed-off-by: default avatarZhen Kong <zkong@codeaurora.org>
parent 3fafba6f
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -903,6 +903,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;
}

@@ -1066,6 +1067,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;
}

@@ -1220,8 +1222,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;
@@ -1231,8 +1235,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->data_len))
				return -EFAULT;
				creq->data_len)) {
				err = -EFAULT;
				goto exit;
			}

			k_align_dst += creq->data_len;
			creq->vbuf.dst[dst_i].len -= creq->data_len;
@@ -1241,7 +1247,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;
};

+1 −1
Original line number Diff line number Diff line
@@ -3964,7 +3964,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;