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 linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html