crypto: qce - update the skcipher IV
authorEneas U de Queiroz <cotequeiroz@gmail.com>
Fri, 20 Dec 2019 19:02:16 +0000 (16:02 -0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 27 Dec 2019 10:18:04 +0000 (18:18 +0800)
Update the IV after the completion of each cipher operation.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/qce/skcipher.c

index a9ae356bc2a76d3040e0a2ee0598dc2490d72c93..d3852a61cb1dc235e47b21c8b26addd20390b30c 100644 (file)
@@ -21,6 +21,7 @@ static void qce_skcipher_done(void *data)
        struct qce_cipher_reqctx *rctx = skcipher_request_ctx(req);
        struct qce_alg_template *tmpl = to_cipher_tmpl(crypto_skcipher_reqtfm(req));
        struct qce_device *qce = tmpl->qce;
+       struct qce_result_dump *result_buf = qce->dma.result_buf;
        enum dma_data_direction dir_src, dir_dst;
        u32 status;
        int error;
@@ -45,6 +46,7 @@ static void qce_skcipher_done(void *data)
        if (error < 0)
                dev_dbg(qce->dev, "skcipher operation error (%x)\n", status);
 
+       memcpy(rctx->iv, result_buf->encr_cntr_iv, rctx->ivsize);
        qce->async_req_done(tmpl->qce, error);
 }