aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/ccm.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/crypto/ccm.c b/crypto/ccm.c
index 1ce37ae0ce56..0a083342ec8c 100644
--- a/crypto/ccm.c
+++ b/crypto/ccm.c
@@ -363,7 +363,7 @@ static int crypto_ccm_decrypt(struct aead_request *req)
363 unsigned int cryptlen = req->cryptlen; 363 unsigned int cryptlen = req->cryptlen;
364 u8 *authtag = pctx->auth_tag; 364 u8 *authtag = pctx->auth_tag;
365 u8 *odata = pctx->odata; 365 u8 *odata = pctx->odata;
366 u8 *iv = req->iv; 366 u8 *iv = pctx->idata;
367 int err; 367 int err;
368 368
369 cryptlen -= authsize; 369 cryptlen -= authsize;
@@ -379,6 +379,8 @@ static int crypto_ccm_decrypt(struct aead_request *req)
379 if (req->src != req->dst) 379 if (req->src != req->dst)
380 dst = pctx->dst; 380 dst = pctx->dst;
381 381
382 memcpy(iv, req->iv, 16);
383
382 skcipher_request_set_tfm(skreq, ctx->ctr); 384 skcipher_request_set_tfm(skreq, ctx->ctr);
383 skcipher_request_set_callback(skreq, pctx->flags, 385 skcipher_request_set_callback(skreq, pctx->flags,
384 crypto_ccm_decrypt_done, req); 386 crypto_ccm_decrypt_done, req);