6.17-stable review patch. If anyone has any objections, please let me know.
------------------
From: Herbert Xu herbert@gondor.apana.org.au
[ Upstream commit ebbdf6466b30e3b37f3b360826efd21f0633fb9e ]
The partial block length returned by a block-only driver should not be passed up to the caller since ahash itself deals with the partial block data.
Set err to zero in ahash_update_finish if it was positive.
Reported-by: T Pratham t-pratham@ti.com Tested-by: T Pratham t-pratham@ti.com Fixes: 9d7a0ab1c753 ("crypto: ahash - Handle partial blocks in API") Signed-off-by: Herbert Xu herbert@gondor.apana.org.au Signed-off-by: Sasha Levin sashal@kernel.org --- crypto/ahash.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/crypto/ahash.c b/crypto/ahash.c index 5248aab939ca7..09a02ed4c4a09 100644 --- a/crypto/ahash.c +++ b/crypto/ahash.c @@ -423,7 +423,11 @@ static int ahash_update_finish(struct ahash_request *req, int err)
req->nbytes += nonzero - blen;
- blen = err < 0 ? 0 : err + nonzero; + blen = 0; + if (err >= 0) { + blen = err + nonzero; + err = 0; + } if (ahash_request_isvirt(req)) memcpy(buf, req->svirt + req->nbytes - blen, blen); else