aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/crypto/ccp/ccp-ops.c')
-rw-r--r--drivers/crypto/ccp/ccp-ops.c14
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
891e_tag: 893e_final_wa:
892 ccp_dm_free(&final_wa); 894 ccp_dm_free(&final_wa);
893 895
894e_dst: 896e_dst: