crypto: caam - Fix incorrect size when DMA unmapping buffer
The CAAM driver uses two data buffers to store data for a hashing operation, with one buffer defined as active. This change forces switching of the active buffer when executing a hashing operation to avoid a later DMA unmap using the length of the opposite buffer. Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
d37e296979
commit
8af7b0f809
1 changed files with 5 additions and 4 deletions
|
@ -835,17 +835,17 @@ static int ahash_update_ctx(struct ahash_request *req)
|
||||||
src_map_to_sec4_sg(jrdev, req->src, src_nents,
|
src_map_to_sec4_sg(jrdev, req->src, src_nents,
|
||||||
edesc->sec4_sg + sec4_sg_src_index,
|
edesc->sec4_sg + sec4_sg_src_index,
|
||||||
chained);
|
chained);
|
||||||
if (*next_buflen) {
|
if (*next_buflen)
|
||||||
scatterwalk_map_and_copy(next_buf, req->src,
|
scatterwalk_map_and_copy(next_buf, req->src,
|
||||||
to_hash - *buflen,
|
to_hash - *buflen,
|
||||||
*next_buflen, 0);
|
*next_buflen, 0);
|
||||||
state->current_buf = !state->current_buf;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
(edesc->sec4_sg + sec4_sg_src_index - 1)->len |=
|
(edesc->sec4_sg + sec4_sg_src_index - 1)->len |=
|
||||||
SEC4_SG_LEN_FIN;
|
SEC4_SG_LEN_FIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state->current_buf = !state->current_buf;
|
||||||
|
|
||||||
sh_len = desc_len(sh_desc);
|
sh_len = desc_len(sh_desc);
|
||||||
desc = edesc->hw_desc;
|
desc = edesc->hw_desc;
|
||||||
init_job_desc_shared(desc, ptr, sh_len, HDR_SHARE_DEFER |
|
init_job_desc_shared(desc, ptr, sh_len, HDR_SHARE_DEFER |
|
||||||
|
@ -1268,9 +1268,10 @@ static int ahash_update_no_ctx(struct ahash_request *req)
|
||||||
scatterwalk_map_and_copy(next_buf, req->src,
|
scatterwalk_map_and_copy(next_buf, req->src,
|
||||||
to_hash - *buflen,
|
to_hash - *buflen,
|
||||||
*next_buflen, 0);
|
*next_buflen, 0);
|
||||||
state->current_buf = !state->current_buf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state->current_buf = !state->current_buf;
|
||||||
|
|
||||||
sh_len = desc_len(sh_desc);
|
sh_len = desc_len(sh_desc);
|
||||||
desc = edesc->hw_desc;
|
desc = edesc->hw_desc;
|
||||||
init_job_desc_shared(desc, ptr, sh_len, HDR_SHARE_DEFER |
|
init_job_desc_shared(desc, ptr, sh_len, HDR_SHARE_DEFER |
|
||||||
|
|
Loading…
Add table
Reference in a new issue