diff options
Diffstat (limited to 'drivers/crypto/ccp/ccp-ops.c')
-rw-r--r-- | drivers/crypto/ccp/ccp-ops.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/crypto/ccp/ccp-ops.c b/drivers/crypto/ccp/ccp-ops.c index 20ca9c9e109e..453d27d2a4ff 100644 --- a/drivers/crypto/ccp/ccp-ops.c +++ b/drivers/crypto/ccp/ccp-ops.c | |||
@@ -783,7 +783,7 @@ ccp_run_aes_gcm_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
783 | in_place ? DMA_BIDIRECTIONAL | 783 | in_place ? DMA_BIDIRECTIONAL |
784 | : DMA_TO_DEVICE); | 784 | : DMA_TO_DEVICE); |
785 | if (ret) | 785 | if (ret) |
786 | goto e_ctx; | 786 | goto e_aad; |
787 | 787 | ||
788 | if (in_place) { | 788 | if (in_place) { |
789 | dst = src; | 789 | dst = src; |
@@ -868,7 +868,7 @@ ccp_run_aes_gcm_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
868 | op.u.aes.size = 0; | 868 | op.u.aes.size = 0; |
869 | ret = cmd_q->ccp->vdata->perform->aes(&op); | 869 | ret = cmd_q->ccp->vdata->perform->aes(&op); |
870 | if (ret) | 870 | if (ret) |
871 | goto e_dst; | 871 | goto e_final_wa; |
872 | 872 | ||
873 | if (aes->action == CCP_AES_ACTION_ENCRYPT) { | 873 | if (aes->action == CCP_AES_ACTION_ENCRYPT) { |
874 | /* Put the ciphered tag after the ciphertext. */ | 874 | /* Put the ciphered tag after the ciphertext. */ |
@@ -878,17 +878,19 @@ ccp_run_aes_gcm_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
878 | ret = ccp_init_dm_workarea(&tag, cmd_q, authsize, | 878 | ret = ccp_init_dm_workarea(&tag, cmd_q, authsize, |
879 | DMA_BIDIRECTIONAL); | 879 | DMA_BIDIRECTIONAL); |
880 | if (ret) | 880 | if (ret) |
881 | goto e_tag; | 881 | goto e_final_wa; |
882 | ret = ccp_set_dm_area(&tag, 0, p_tag, 0, authsize); | 882 | ret = ccp_set_dm_area(&tag, 0, p_tag, 0, authsize); |
883 | if (ret) | 883 | if (ret) { |
884 | goto e_tag; | 884 | ccp_dm_free(&tag); |
885 | goto e_final_wa; | ||
886 | } | ||
885 | 887 | ||
886 | ret = crypto_memneq(tag.address, final_wa.address, | 888 | ret = crypto_memneq(tag.address, final_wa.address, |
887 | authsize) ? -EBADMSG : 0; | 889 | authsize) ? -EBADMSG : 0; |
888 | ccp_dm_free(&tag); | 890 | ccp_dm_free(&tag); |
889 | } | 891 | } |
890 | 892 | ||
891 | e_tag: | 893 | e_final_wa: |
892 | ccp_dm_free(&final_wa); | 894 | ccp_dm_free(&final_wa); |
893 | 895 | ||
894 | e_dst: | 896 | e_dst: |