diff options
Diffstat (limited to 'drivers/crypto/tegra-aes.c')
-rw-r--r-- | drivers/crypto/tegra-aes.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/crypto/tegra-aes.c b/drivers/crypto/tegra-aes.c index e69f3bc473be..eb32fd8cad14 100644 --- a/drivers/crypto/tegra-aes.c +++ b/drivers/crypto/tegra-aes.c | |||
@@ -672,8 +672,10 @@ static int tegra_aes_get_random(struct crypto_rng *tfm, u8 *rdata, | |||
672 | mutex_lock(&aes_lock); | 672 | mutex_lock(&aes_lock); |
673 | 673 | ||
674 | ret = clk_prepare_enable(dd->aes_clk); | 674 | ret = clk_prepare_enable(dd->aes_clk); |
675 | if (ret) | 675 | if (ret) { |
676 | mutex_unlock(&aes_lock); | ||
676 | return ret; | 677 | return ret; |
678 | } | ||
677 | 679 | ||
678 | ctx->dd = dd; | 680 | ctx->dd = dd; |
679 | dd->ctx = ctx; | 681 | dd->ctx = ctx; |
@@ -757,8 +759,10 @@ static int tegra_aes_rng_reset(struct crypto_rng *tfm, u8 *seed, | |||
757 | dd->flags = FLAGS_ENCRYPT | FLAGS_RNG; | 759 | dd->flags = FLAGS_ENCRYPT | FLAGS_RNG; |
758 | 760 | ||
759 | ret = clk_prepare_enable(dd->aes_clk); | 761 | ret = clk_prepare_enable(dd->aes_clk); |
760 | if (ret) | 762 | if (ret) { |
763 | mutex_unlock(&aes_lock); | ||
761 | return ret; | 764 | return ret; |
765 | } | ||
762 | 766 | ||
763 | aes_set_key(dd); | 767 | aes_set_key(dd); |
764 | 768 | ||
@@ -1029,7 +1033,7 @@ out: | |||
1029 | if (dd->buf_out) | 1033 | if (dd->buf_out) |
1030 | dma_free_coherent(dev, AES_HW_DMA_BUFFER_SIZE_BYTES, | 1034 | dma_free_coherent(dev, AES_HW_DMA_BUFFER_SIZE_BYTES, |
1031 | dd->buf_out, dd->dma_buf_out); | 1035 | dd->buf_out, dd->dma_buf_out); |
1032 | if (IS_ERR(dd->aes_clk)) | 1036 | if (!IS_ERR(dd->aes_clk)) |
1033 | clk_put(dd->aes_clk); | 1037 | clk_put(dd->aes_clk); |
1034 | if (aes_wq) | 1038 | if (aes_wq) |
1035 | destroy_workqueue(aes_wq); | 1039 | destroy_workqueue(aes_wq); |