mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 00:20:32 +00:00
crypto: ccree - unmap buffer before copying IV
commitc139c72e2b
upstream. 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: Gilad Ben-Yossef <gilad@benyossef.com> Fixes:00904aa0cd
("crypto: ccree - fix iv handling") Cc: <stable@vger.kernel.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
009eeb9878
commit
0bdd345a38
1 changed files with 2 additions and 1 deletions
|
@ -635,6 +635,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:
|
||||
/*
|
||||
|
@ -664,7 +666,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);
|
||||
|
|
Loading…
Reference in a new issue