crypto: Fix AES_CCM encryption/decryption failure

Signed-off-by: Mona Hossain <mhossain@codeaurora.org>
diff --git a/drivers/crypto/msm/qce40.c b/drivers/crypto/msm/qce40.c
index a935e54..3664af8 100644
--- a/drivers/crypto/msm/qce40.c
+++ b/drivers/crypto/msm/qce40.c
@@ -1042,7 +1042,10 @@
 	pdesc = pce_dev->ce_in_src_desc + pce_dev->ce_in_src_desc_index;
 	pdesc->len |= ADM_DESC_LAST;
 	pdesc = pce_dev->ce_in_dst_desc + pce_dev->ce_in_dst_desc_index;
-	pdesc->len |= ADM_DESC_LAST;
+	if (total)
+		pdesc->len = ADM_DESC_LAST | total;
+	else
+		pdesc->len |= ADM_DESC_LAST;
 
 	pcmd = (dmov_sg *) pce_dev->cmd_list_ce_in;
 	pcmd->cmd |= CMD_LC;
@@ -1202,7 +1205,10 @@
 	pdesc = pce_dev->ce_out_dst_desc + pce_dev->ce_out_dst_desc_index;
 	pdesc->len |= ADM_DESC_LAST;
 	pdesc = pce_dev->ce_out_src_desc + pce_dev->ce_out_src_desc_index;
-	pdesc->len |= ADM_DESC_LAST;
+	if (total)
+		pdesc->len = ADM_DESC_LAST | total;
+	else
+		pdesc->len |= ADM_DESC_LAST;
 	pcmd = (dmov_sg *) pce_dev->cmd_list_ce_out;
 	pcmd->cmd |= CMD_LC;
 };
@@ -1748,8 +1754,8 @@
 	}
 
 	/* finalize the ce_in and ce_out channels command lists */
-	_ce_in_final(pce_dev, areq->nbytes + pad_len);
-	_ce_out_final(pce_dev, areq->nbytes + pad_len);
+	_ce_in_final(pce_dev, 0);
+	_ce_out_final(pce_dev, 0);
 
 	_ce_in_dump(pce_dev);
 	_ce_out_dump(pce_dev);
@@ -1819,7 +1825,7 @@
 				goto bad;
 			}
 	}
-	 _ce_in_final(pce_dev, sreq->size + pad_len);
+	 _ce_in_final(pce_dev, 0);
 
 	_ce_in_dump(pce_dev);
 
@@ -2034,4 +2040,4 @@
 MODULE_LICENSE("GPL v2");
 MODULE_AUTHOR("Mona Hossain <mhossain@codeaurora.org>");
 MODULE_DESCRIPTION("Crypto Engine driver");
-MODULE_VERSION("2.06");
+MODULE_VERSION("2.07");