crypto: omap-sham - fix software fallback handling
authorTero Kristo <t-kristo@ti.com>
Thu, 4 Aug 2016 10:28:39 +0000 (13:28 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 13 Sep 2016 12:20:56 +0000 (20:20 +0800)
If we have processed any data with the hardware accelerator (digcnt > 0),
we must complete the entire hash by using it. This is because the current
hash value can't be imported to the software fallback algorithm. Otherwise
we end up with wrong hash results.

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

index fd50005fd9428f30f8ad2763096a3a365cc90848..f788319f7ba72bf34f6b5b97b4f0e6efcd44c5bc 100644 (file)
@@ -1163,7 +1163,7 @@ static int omap_sham_final(struct ahash_request *req)
         * If buffersize is less than 240, we use fallback SW encoding,
         * as using DMA + HW in this case doesn't provide any benefit.
         */
-       if ((ctx->digcnt + ctx->bufcnt) < 240)
+       if (!ctx->digcnt && ctx->bufcnt < 240)
                return omap_sham_final_shash(req);
        else if (ctx->bufcnt)
                return omap_sham_enqueue(req, OP_FINAL);