Commit 50274b01 authored by Colin Ian King's avatar Colin Ian King Committed by Herbert Xu
Browse files

crypto: sun8i-ss - Fix memory leak of pad



It appears there are several failure return paths that don't seem
to be free'ing pad. Fix these.

Addresses-Coverity: ("Resource leak")
Fixes: d9b45418 ("crypto: sun8i-ss - support hash algorithms")
Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
Acked-by: default avatarCorentin Labbe <clabbe.montjoie@gmail.com>
Tested-by: default avatarCorentin Labbe <clabbe.montjoie@gmail.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 3d8c5f5a
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -348,8 +348,10 @@ int sun8i_ss_hash_run(struct crypto_engine *engine, void *breq)
	bf = (__le32 *)pad;

	result = kzalloc(digestsize, GFP_KERNEL | GFP_DMA);
	if (!result)
	if (!result) {
		kfree(pad);
		return -ENOMEM;
	}

	for (i = 0; i < MAX_SG; i++) {
		rctx->t_dst[i].addr = 0;
@@ -436,10 +438,9 @@ int sun8i_ss_hash_run(struct crypto_engine *engine, void *breq)
		     DMA_TO_DEVICE);
	dma_unmap_single(ss->dev, addr_res, digestsize, DMA_FROM_DEVICE);

	kfree(pad);

	memcpy(areq->result, result, algt->alg.hash.halg.digestsize);
theend:
	kfree(pad);
	kfree(result);
	crypto_finalize_hash_request(engine, breq, err);
	return 0;