Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1fdafa1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull crypto fixes from Herbert Xu:
 "This fixes a number of memory corruption bugs in the newly added
  sha256-mb/sha256-mb code"

* 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  crypto: sha512-mb - fix ctx pointer
  crypto: sha256-mb - fix ctx pointer and digest copy
parents ef0e1ea8 e67479b1
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -485,10 +485,10 @@ static int sha_complete_job(struct mcryptd_hash_request_ctx *rctx,

			req = cast_mcryptd_ctx_to_req(req_ctx);
			if (irqs_disabled())
				rctx->complete(&req->base, ret);
				req_ctx->complete(&req->base, ret);
			else {
				local_bh_disable();
				rctx->complete(&req->base, ret);
				req_ctx->complete(&req->base, ret);
				local_bh_enable();
			}
		}
+4 −3
Original line number Diff line number Diff line
@@ -265,13 +265,14 @@ ENTRY(sha256_mb_mgr_get_comp_job_avx2)
	vpinsrd	$1, _args_digest+1*32(state, idx, 4), %xmm0, %xmm0
	vpinsrd	$2, _args_digest+2*32(state, idx, 4), %xmm0, %xmm0
	vpinsrd	$3, _args_digest+3*32(state, idx, 4), %xmm0, %xmm0
	movl	_args_digest+4*32(state, idx, 4), tmp2_w
	vmovd   _args_digest(state , idx, 4) , %xmm0
	vpinsrd	$1, _args_digest+5*32(state, idx, 4), %xmm1, %xmm1
	vpinsrd	$2, _args_digest+6*32(state, idx, 4), %xmm1, %xmm1
	vpinsrd	$3, _args_digest+7*32(state, idx, 4), %xmm1, %xmm1

        vmovdqu %xmm0, _result_digest(job_rax)
	movl	tmp2_w, _result_digest+1*16(job_rax)
        offset =  (_result_digest + 1*16)
        vmovdqu %xmm1, offset(job_rax)

	pop	%rbx

+2 −2
Original line number Diff line number Diff line
@@ -497,10 +497,10 @@ static int sha_complete_job(struct mcryptd_hash_request_ctx *rctx,

			req = cast_mcryptd_ctx_to_req(req_ctx);
			if (irqs_disabled())
				rctx->complete(&req->base, ret);
				req_ctx->complete(&req->base, ret);
			else {
				local_bh_disable();
				rctx->complete(&req->base, ret);
				req_ctx->complete(&req->base, ret);
				local_bh_enable();
			}
		}