Re: [PATCH crypto 1/2] crypto: caam - fix mem leak in ahash_setkey

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Friday, April 18, 2014 at 12:01:41 PM, Horia Geanta wrote:
> In case hash key is bigger than algorithm block size, it is hashed.
> In this case, memory is allocated to keep this hash in hashed_key.
> hashed_key has to be freed on the key_dma dma mapping error path.
> 
> Cc: <stable@xxxxxxxxxxxxxxx> # 3.10+
> Signed-off-by: Horia Geanta <horia.geanta@xxxxxxxxxxxxx>
> ---
>  drivers/crypto/caam/caamhash.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/crypto/caam/caamhash.c
> b/drivers/crypto/caam/caamhash.c index 0378328f47a7..2d244e629ed2 100644
> --- a/drivers/crypto/caam/caamhash.c
> +++ b/drivers/crypto/caam/caamhash.c
> @@ -545,7 +545,8 @@ static int ahash_setkey(struct crypto_ahash *ahash,
>  				      DMA_TO_DEVICE);
>  	if (dma_mapping_error(jrdev, ctx->key_dma)) {
>  		dev_err(jrdev, "unable to map key i/o memory\n");
> -		return -ENOMEM;
> +		ret = -ENOMEM;
> +		goto map_err;
>  	}
>  #ifdef DEBUG
>  	print_hex_dump(KERN_ERR, "ctx.key@"__stringify(__LINE__)": ",
> @@ -559,6 +560,7 @@ static int ahash_setkey(struct crypto_ahash *ahash,
>  				 DMA_TO_DEVICE);
>  	}
> 
> +map_err:
>  	kfree(hashed_key);

Reviewed-by: Marek Vasut <marex@xxxxxxx>

btw you might want to clean up the use of printk() vs. dev_*() throughout the 
driver, it's horribly intermixed. It'd be nice to use just dev_*() for output.
Stuff like
#ifdef DEBUG
printk(...)
#endif
can be easily replaced with dev_dbg() for example ...

Best regards,
Marek Vasut
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]