mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 18:24:14 +08:00
crypto: mv_cesa - fix hashing of chunks > 1920 bytes
This was broken by commit 7759995c75
(yes,
myself). The basic problem here is since the digest state is only saved
after the last chunk, the state array is only valid when handling the
first chunk of the next buffer. Broken since linux-3.0.
Signed-off-by: Phil Sutter <phil.sutter@viprinet.com>
Cc: <stable@kernel.org> # 3.1.x
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
3acc84739d
commit
274252862f
@ -342,11 +342,13 @@ static void mv_process_hash_current(int first_block)
|
||||
else
|
||||
op.config |= CFG_MID_FRAG;
|
||||
|
||||
writel(req_ctx->state[0], cpg->reg + DIGEST_INITIAL_VAL_A);
|
||||
writel(req_ctx->state[1], cpg->reg + DIGEST_INITIAL_VAL_B);
|
||||
writel(req_ctx->state[2], cpg->reg + DIGEST_INITIAL_VAL_C);
|
||||
writel(req_ctx->state[3], cpg->reg + DIGEST_INITIAL_VAL_D);
|
||||
writel(req_ctx->state[4], cpg->reg + DIGEST_INITIAL_VAL_E);
|
||||
if (first_block) {
|
||||
writel(req_ctx->state[0], cpg->reg + DIGEST_INITIAL_VAL_A);
|
||||
writel(req_ctx->state[1], cpg->reg + DIGEST_INITIAL_VAL_B);
|
||||
writel(req_ctx->state[2], cpg->reg + DIGEST_INITIAL_VAL_C);
|
||||
writel(req_ctx->state[3], cpg->reg + DIGEST_INITIAL_VAL_D);
|
||||
writel(req_ctx->state[4], cpg->reg + DIGEST_INITIAL_VAL_E);
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(cpg->sram + SRAM_CONFIG, &op, sizeof(struct sec_accel_config));
|
||||
|
Loading…
Reference in New Issue
Block a user