crypto: ahash - Zero positive err value in ahash_update_finish

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: 9d7a0ab1c7 ("crypto: ahash - Handle partial blocks in API")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Herbert Xu 2025-11-21 13:54:20 +08:00
parent b0356b75f4
commit ebbdf6466b
1 changed files with 5 additions and 1 deletions

View File

@ -423,7 +423,11 @@ static int ahash_update_finish(struct ahash_request *req, int err)
req->nbytes += nonzero - blen; 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)) if (ahash_request_isvirt(req))
memcpy(buf, req->svirt + req->nbytes - blen, blen); memcpy(buf, req->svirt + req->nbytes - blen, blen);
else else