diff mbox series

crypto: omap-sham: fix digcnt register handling with export/import

Message ID 20200907075624.32379-1-t-kristo@ti.com
State Accepted
Commit 3faf757bad75f3fc1b2736f0431e295a073a7423
Headers show
Series crypto: omap-sham: fix digcnt register handling with export/import | expand

Commit Message

Tero Kristo Sept. 7, 2020, 7:56 a.m. UTC
Running export/import for hashes in peculiar order (mostly done by
openssl) can mess up the internal book keeping of the OMAP SHA core.
Fix by forcibly writing the correct DIGCNT back to hardware. This issue
was noticed while transitioning to openssl 1.1 support.

Fixes: 0d373d603202 ("crypto: omap-sham - Add OMAP4/AM33XX SHAM Support")
Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
 drivers/crypto/omap-sham.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Herbert Xu Sept. 18, 2020, 7:28 a.m. UTC | #1
On Mon, Sep 07, 2020 at 10:56:24AM +0300, Tero Kristo wrote:
> Running export/import for hashes in peculiar order (mostly done by

> openssl) can mess up the internal book keeping of the OMAP SHA core.

> Fix by forcibly writing the correct DIGCNT back to hardware. This issue

> was noticed while transitioning to openssl 1.1 support.

> 

> Fixes: 0d373d603202 ("crypto: omap-sham - Add OMAP4/AM33XX SHAM Support")

> Signed-off-by: Tero Kristo <t-kristo@ti.com>

> ---

>  drivers/crypto/omap-sham.c | 3 +++

>  1 file changed, 3 insertions(+)


Patch applied.  Thanks.
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
diff mbox series

Patch

diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c
index b2b930a1fb04..a3b38d2c92e7 100644
--- a/drivers/crypto/omap-sham.c
+++ b/drivers/crypto/omap-sham.c
@@ -460,6 +460,9 @@  static void omap_sham_write_ctrl_omap4(struct omap_sham_dev *dd, size_t length,
 	struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req);
 	u32 val, mask;
 
+	if (likely(ctx->digcnt))
+		omap_sham_write(dd, SHA_REG_DIGCNT(dd), ctx->digcnt);
+
 	/*
 	 * Setting ALGO_CONST only for the first iteration and
 	 * CLOSE_HASH only for the last one. Note that flags mode bits