Commit 1762818f authored by Arvind Sankar's avatar Arvind Sankar Committed by Herbert Xu
Browse files

crypto: lib/sha256 - Use memzero_explicit() for clearing state



Without the barrier_data() inside memzero_explicit(), the compiler may
optimize away the state-clearing if it can tell that the state is not
used afterwards. At least in lib/crypto/sha256.c:__sha256_final(), the
function can get inlined into sha256(), in which case the memset is
optimized away.

Signed-off-by: default avatarArvind Sankar <nivedita@alum.mit.edu>
Reviewed-by: default avatarEric Biggers <ebiggers@google.com>
Acked-by: default avatarArd Biesheuvel <ardb@kernel.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 383e8a82
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -265,7 +265,7 @@ static void __sha256_final(struct sha256_state *sctx, u8 *out, int digest_words)
		put_unaligned_be32(sctx->state[i], &dst[i]);
		put_unaligned_be32(sctx->state[i], &dst[i]);


	/* Zeroize sensitive information. */
	/* Zeroize sensitive information. */
	memset(sctx, 0, sizeof(*sctx));
	memzero_explicit(sctx, sizeof(*sctx));
}
}


void sha256_final(struct sha256_state *sctx, u8 *out)
void sha256_final(struct sha256_state *sctx, u8 *out)