]> git.baikalelectronics.ru Git - kernel.git/commit
crypto: qce - Hold back a block of data to be transferred as part of final
authorThara Gopinath <thara.gopinath@linaro.org>
Thu, 11 Feb 2021 20:01:19 +0000 (15:01 -0500)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sun, 7 Mar 2021 04:13:15 +0000 (15:13 +1100)
commita5236a117733cf66e5804428a7941e9af28bea73
tree1606674076c9edf499a235fd38e01994e0130289
parent1d3120d87a1b6e8fc92c05e15aee002a859a06a9
crypto: qce - Hold back a block of data to be transferred as part of final

If the available data to transfer is exactly a multiple of block size, save
the last block to be transferred in qce_ahash_final (with the last block
bit set) if this is indeed the end of data stream. If not this saved block
will be transferred as part of next update. If this block is not held back
and if this is indeed the end of data stream, the digest obtained will be
wrong since qce_ahash_final will see that rctx->buflen is 0 and return
doing nothing which in turn means that a digest will not be copied to the
destination result buffer.  qce_ahash_final cannot be made to alter this
behavior and allowed to proceed if rctx->buflen is 0 because the crypto
engine BAM does not allow for zero length transfers.

Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Thara Gopinath <thara.gopinath@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/qce/sha.c