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

Commit c139c72e authored by Gilad Ben-Yossef's avatar Gilad Ben-Yossef Committed by Herbert Xu
Browse files

crypto: ccree - unmap buffer before copying IV



We were copying the last ciphertext block into the IV field
for CBC before removing the DMA mapping of the output buffer
with the result of the buffer sometime being out-of-sync cache
wise and were getting intermittent cases of bad output IV.

Fix it by moving the DMA buffer unmapping before the copy.

Signed-off-by: default avatarGilad Ben-Yossef <gilad@benyossef.com>
Fixes: 00904aa0 ("crypto: ccree - fix iv handling")
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 1ffbe134
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -652,6 +652,8 @@ static void cc_cipher_complete(struct device *dev, void *cc_req, int err)
	unsigned int ivsize = crypto_skcipher_ivsize(sk_tfm);
	unsigned int len;

	cc_unmap_cipher_request(dev, req_ctx, ivsize, src, dst);

	switch (ctx_p->cipher_mode) {
	case DRV_CIPHER_CBC:
		/*
@@ -681,7 +683,6 @@ static void cc_cipher_complete(struct device *dev, void *cc_req, int err)
		break;
	}

	cc_unmap_cipher_request(dev, req_ctx, ivsize, src, dst);
	kzfree(req_ctx->iv);

	skcipher_request_complete(req, err);