crypto: qce - drop unused scatterlist traversal in qce_ahash_update

Commit df12ef60c8 ("crypto: qce/sha - Do not modify scatterlist passed
along with request") removed the only use of sg_last, rendering the
scatterlist traversal useless. Remove it and its local variables.

Also remove the redundant hash_later check, inline the source offset,
and assign the number of complete blocks directly to req->nbytes.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Thorsten Blum 2026-06-14 17:26:07 +02:00 committed by Herbert Xu
parent a2f5f62c5b
commit 32ba5ea177

View File

@ -187,10 +187,8 @@ static int qce_ahash_update(struct ahash_request *req)
struct qce_sha_reqctx *rctx = ahash_request_ctx_dma(req);
struct qce_alg_template *tmpl = to_ahash_tmpl(req->base.tfm);
struct qce_device *qce = tmpl->qce;
struct scatterlist *sg_last, *sg;
unsigned int total, len;
unsigned int total;
unsigned int hash_later;
unsigned int nbytes;
unsigned int blocksize;
blocksize = crypto_tfm_alg_blocksize(crypto_ahash_tfm(tfm));
@ -238,28 +236,8 @@ static int qce_ahash_update(struct ahash_request *req)
if (!hash_later)
hash_later = blocksize;
if (hash_later) {
unsigned int src_offset = req->nbytes - hash_later;
scatterwalk_map_and_copy(rctx->buf, req->src, src_offset,
hash_later, 0);
}
/* here nbytes is multiple of blocksize */
nbytes = total - hash_later;
len = rctx->buflen;
sg = sg_last = req->src;
while (len < nbytes && sg) {
if (len + sg_dma_len(sg) > nbytes)
break;
len += sg_dma_len(sg);
sg_last = sg;
sg = sg_next(sg);
}
if (!sg_last)
return -EINVAL;
scatterwalk_map_and_copy(rctx->buf, req->src, req->nbytes - hash_later,
hash_later, 0);
if (rctx->buflen) {
sg_init_table(rctx->sg, 2);
@ -268,7 +246,8 @@ static int qce_ahash_update(struct ahash_request *req)
req->src = rctx->sg;
}
req->nbytes = nbytes;
/* hash only complete blocks */
req->nbytes = total - hash_later;
rctx->buflen = hash_later;
return qce->async_req_enqueue(tmpl->qce, &req->base);