]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
crypto: omap-des - add IV output handling
authorTero Kristo <t-kristo@ti.com>
Tue, 5 Nov 2019 14:00:53 +0000 (16:00 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 11 Dec 2019 08:36:57 +0000 (16:36 +0800)
Currently omap-des driver does not copy end result IV out at all. This
is evident with the additional checks done at the crypto test manager.
Fix by copying out the IV values from HW.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/omap-des.c

index 4c4dbc2b377ea4f282f46446e7a821eeb8ddc58c..2e3ecb860e27544a1521f08e4baa5544e39c05b9 100644 (file)
@@ -597,6 +597,7 @@ static int omap_des_crypt_req(struct crypto_engine *engine,
 static void omap_des_done_task(unsigned long data)
 {
        struct omap_des_dev *dd = (struct omap_des_dev *)data;
+       int i;
 
        pr_debug("enter done_task\n");
 
@@ -615,6 +616,11 @@ static void omap_des_done_task(unsigned long data)
        omap_crypto_cleanup(&dd->out_sgl, dd->orig_out, 0, dd->total_save,
                            FLAGS_OUT_DATA_ST_SHIFT, dd->flags);
 
+       if ((dd->flags & FLAGS_CBC) && dd->req->iv)
+               for (i = 0; i < 2; i++)
+                       ((u32 *)dd->req->iv)[i] =
+                               omap_des_read(dd, DES_REG_IV(dd, i));
+
        omap_des_finish_req(dd, 0);
 
        pr_debug("exit\n");