|
@@ -909,13 +909,14 @@ static int ahash_final_ctx(struct ahash_request *req)
|
|
|
state->buflen_1;
|
|
|
u32 *sh_desc = ctx->sh_desc_fin, *desc;
|
|
|
dma_addr_t ptr = ctx->sh_desc_fin_dma;
|
|
|
- int sec4_sg_bytes;
|
|
|
+ int sec4_sg_bytes, sec4_sg_src_index;
|
|
|
int digestsize = crypto_ahash_digestsize(ahash);
|
|
|
struct ahash_edesc *edesc;
|
|
|
int ret = 0;
|
|
|
int sh_len;
|
|
|
|
|
|
- sec4_sg_bytes = (1 + (buflen ? 1 : 0)) * sizeof(struct sec4_sg_entry);
|
|
|
+ sec4_sg_src_index = 1 + (buflen ? 1 : 0);
|
|
|
+ sec4_sg_bytes = sec4_sg_src_index * sizeof(struct sec4_sg_entry);
|
|
|
|
|
|
/* allocate space for base edesc and hw desc commands, link tables */
|
|
|
edesc = kmalloc(sizeof(struct ahash_edesc) + DESC_JOB_IO_LEN +
|
|
@@ -942,7 +943,7 @@ static int ahash_final_ctx(struct ahash_request *req)
|
|
|
state->buf_dma = try_buf_map_to_sec4_sg(jrdev, edesc->sec4_sg + 1,
|
|
|
buf, state->buf_dma, buflen,
|
|
|
last_buflen);
|
|
|
- (edesc->sec4_sg + sec4_sg_bytes - 1)->len |= SEC4_SG_LEN_FIN;
|
|
|
+ (edesc->sec4_sg + sec4_sg_src_index - 1)->len |= SEC4_SG_LEN_FIN;
|
|
|
|
|
|
edesc->sec4_sg_dma = dma_map_single(jrdev, edesc->sec4_sg,
|
|
|
sec4_sg_bytes, DMA_TO_DEVICE);
|