]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
crypto: ahash - Zero positive err value in ahash_update_finish
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 21 Nov 2025 05:54:20 +0000 (13:54 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 24 Nov 2025 09:53:02 +0000 (17:53 +0800)
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>
crypto/ahash.c

index 819b484a1a003ce400929c66a7018d39863672fb..66492ae75fcfb65c0c73f7a2a6ba0cea67073cbd 100644 (file)
@@ -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