|
@@ -148,6 +148,7 @@ static inline int map_seq_out_ptr_ctx(u32 *desc, struct device *jrdev,
|
|
|
ctx_len, DMA_FROM_DEVICE);
|
|
|
if (dma_mapping_error(jrdev, state->ctx_dma)) {
|
|
|
dev_err(jrdev, "unable to map ctx\n");
|
|
|
+ state->ctx_dma = 0;
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
@@ -208,6 +209,7 @@ static inline int ctx_map_to_sec4_sg(u32 *desc, struct device *jrdev,
|
|
|
state->ctx_dma = dma_map_single(jrdev, state->caam_ctx, ctx_len, flag);
|
|
|
if (dma_mapping_error(jrdev, state->ctx_dma)) {
|
|
|
dev_err(jrdev, "unable to map ctx\n");
|
|
|
+ state->ctx_dma = 0;
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
@@ -482,8 +484,10 @@ static inline void ahash_unmap_ctx(struct device *dev,
|
|
|
struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
|
|
|
struct caam_hash_state *state = ahash_request_ctx(req);
|
|
|
|
|
|
- if (state->ctx_dma)
|
|
|
+ if (state->ctx_dma) {
|
|
|
dma_unmap_single(dev, state->ctx_dma, ctx->ctx_len, flag);
|
|
|
+ state->ctx_dma = 0;
|
|
|
+ }
|
|
|
ahash_unmap(dev, edesc, req, dst_len);
|
|
|
}
|
|
|
|
|
@@ -1463,6 +1467,7 @@ static int ahash_init(struct ahash_request *req)
|
|
|
state->finup = ahash_finup_first;
|
|
|
state->final = ahash_final_no_ctx;
|
|
|
|
|
|
+ state->ctx_dma = 0;
|
|
|
state->current_buf = 0;
|
|
|
state->buf_dma = 0;
|
|
|
state->buflen_0 = 0;
|