Commit 4c855d50 authored by Eric Biggers's avatar Eric Biggers
Browse files

lib/crypto: sha256: Propagate sha256_block_state type to implementations



The previous commit made the SHA-256 compression function state be
strongly typed, but it wasn't propagated all the way down to the
implementations of it.  Do that now.

Acked-by: default avatarArd Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20250630160645.3198-8-ebiggers@kernel.org


Signed-off-by: default avatarEric Biggers <ebiggers@kernel.org>
parent b86ced88
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@
 * We pass everything as 64-bit. OCTEON can handle misaligned data.
 */

void sha256_blocks_arch(u32 state[SHA256_STATE_WORDS],
void sha256_blocks_arch(struct sha256_block_state *state,
			const u8 *data, size_t nblocks)
{
	struct octeon_cop2_state cop2_state;
+4 −4
Original line number Diff line number Diff line
@@ -17,9 +17,9 @@ static inline bool sha256_is_arch_optimized(void)
	return false;
}
#endif
void sha256_blocks_generic(u32 state[SHA256_STATE_WORDS],
void sha256_blocks_generic(struct sha256_block_state *state,
			   const u8 *data, size_t nblocks);
void sha256_blocks_arch(u32 state[SHA256_STATE_WORDS],
void sha256_blocks_arch(struct sha256_block_state *state,
			const u8 *data, size_t nblocks);

static __always_inline void sha256_choose_blocks(
@@ -27,9 +27,9 @@ static __always_inline void sha256_choose_blocks(
	bool force_generic, bool force_simd)
{
	if (!IS_ENABLED(CONFIG_CRYPTO_ARCH_HAVE_LIB_SHA256) || force_generic)
		sha256_blocks_generic(state, data, nblocks);
		sha256_blocks_generic((struct sha256_block_state *)state, data, nblocks);
	else
		sha256_blocks_arch(state, data, nblocks);
		sha256_blocks_arch((struct sha256_block_state *)state, data, nblocks);
}

static __always_inline void sha256_finup(
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@
	.word		0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2

	/*
	 * void sha256_ce_transform(u32 state[SHA256_STATE_WORDS],
	 * void sha256_ce_transform(struct sha256_block_state *state,
	 *			    const u8 *data, size_t nblocks);
	 */
ENTRY(sha256_ce_transform)
+4 −4
Original line number Diff line number Diff line
@@ -10,17 +10,17 @@
#include <linux/kernel.h>
#include <linux/module.h>

asmlinkage void sha256_block_data_order(u32 state[SHA256_STATE_WORDS],
asmlinkage void sha256_block_data_order(struct sha256_block_state *state,
					const u8 *data, size_t nblocks);
asmlinkage void sha256_block_data_order_neon(u32 state[SHA256_STATE_WORDS],
asmlinkage void sha256_block_data_order_neon(struct sha256_block_state *state,
					     const u8 *data, size_t nblocks);
asmlinkage void sha256_ce_transform(u32 state[SHA256_STATE_WORDS],
asmlinkage void sha256_ce_transform(struct sha256_block_state *state,
				    const u8 *data, size_t nblocks);

static __ro_after_init DEFINE_STATIC_KEY_FALSE(have_neon);
static __ro_after_init DEFINE_STATIC_KEY_FALSE(have_ce);

void sha256_blocks_arch(u32 state[SHA256_STATE_WORDS],
void sha256_blocks_arch(struct sha256_block_state *state,
			const u8 *data, size_t nblocks)
{
	if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) &&
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@
	.word		0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2

	/*
	 * size_t __sha256_ce_transform(u32 state[SHA256_STATE_WORDS],
	 * size_t __sha256_ce_transform(struct sha256_block_state *state,
	 *				const u8 *data, size_t nblocks);
	 */
	.text
Loading