Commit 0ae45244 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull crypto fixes from Herbert Xu:

 - Fix bug in crypto_skcipher that breaks the new ti driver

 - Check for invalid assoclen in essiv

* tag 'v6.18-p3' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  crypto: essiv - Check ssize for decryption and in-place encryption
  crypto: skcipher - Fix reqsize handling
parents 84d4e8b6 6bb73db6
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -186,9 +186,14 @@ static int essiv_aead_crypt(struct aead_request *req, bool enc)
	const struct essiv_tfm_ctx *tctx = crypto_aead_ctx(tfm);
	struct essiv_aead_request_ctx *rctx = aead_request_ctx(req);
	struct aead_request *subreq = &rctx->aead_req;
	int ivsize = crypto_aead_ivsize(tfm);
	int ssize = req->assoclen - ivsize;
	struct scatterlist *src = req->src;
	int err;

	if (ssize < 0)
		return -EINVAL;

	crypto_cipher_encrypt_one(tctx->essiv_cipher, req->iv, req->iv);

	/*
@@ -198,19 +203,12 @@ static int essiv_aead_crypt(struct aead_request *req, bool enc)
	 */
	rctx->assoc = NULL;
	if (req->src == req->dst || !enc) {
		scatterwalk_map_and_copy(req->iv, req->dst,
					 req->assoclen - crypto_aead_ivsize(tfm),
					 crypto_aead_ivsize(tfm), 1);
		scatterwalk_map_and_copy(req->iv, req->dst, ssize, ivsize, 1);
	} else {
		u8 *iv = (u8 *)aead_request_ctx(req) + tctx->ivoffset;
		int ivsize = crypto_aead_ivsize(tfm);
		int ssize = req->assoclen - ivsize;
		struct scatterlist *sg;
		int nents;

		if (ssize < 0)
			return -EINVAL;

		nents = sg_nents_for_len(req->src, ssize);
		if (nents < 0)
			return -EINVAL;
+2 −0
Original line number Diff line number Diff line
@@ -294,6 +294,8 @@ static int crypto_skcipher_init_tfm(struct crypto_tfm *tfm)
		return crypto_init_lskcipher_ops_sg(tfm);
	}

	crypto_skcipher_set_reqsize(skcipher, crypto_tfm_alg_reqsize(tfm));

	if (alg->exit)
		skcipher->base.exit = crypto_skcipher_exit_tfm;