mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 03:11:11 -04:00
lib/crypto: arm64/sha3: Remove obsolete chunking logic
Since commitaefbab8e77("arm64: fpsimd: Preserve/restore kernel mode NEON at context switch"), kernel-mode NEON sections have been preemptible on arm64. And since commit7dadeaa6e8("sched: Further restrict the preemption modes"), voluntary preemption is no longer supported on arm64 either. Therefore, there's no longer any need to limit the length of kernel-mode NEON sections on arm64. Simplify the SHA-3 code accordingly. Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20260401000548.133151-9-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
This commit is contained in:
@@ -37,8 +37,8 @@
|
||||
.endm
|
||||
|
||||
/*
|
||||
* size_t sha3_ce_transform(struct sha3_state *state, const u8 *data,
|
||||
* size_t nblocks, size_t block_size)
|
||||
* void sha3_ce_transform(struct sha3_state *state, const u8 *data,
|
||||
* size_t nblocks, size_t block_size)
|
||||
*
|
||||
* block_size is assumed to be one of 72 (SHA3-512), 104 (SHA3-384), 136
|
||||
* (SHA3-256 and SHAKE256), 144 (SHA3-224), or 168 (SHAKE128).
|
||||
@@ -185,18 +185,16 @@ SYM_FUNC_START(sha3_ce_transform)
|
||||
eor v0.16b, v0.16b, v31.16b
|
||||
|
||||
cbnz w8, 3b
|
||||
cond_yield 4f, x8, x9
|
||||
cbnz x2, 0b
|
||||
|
||||
/* save state */
|
||||
4: st1 { v0.1d- v3.1d}, [x0], #32
|
||||
st1 { v0.1d- v3.1d}, [x0], #32
|
||||
st1 { v4.1d- v7.1d}, [x0], #32
|
||||
st1 { v8.1d-v11.1d}, [x0], #32
|
||||
st1 {v12.1d-v15.1d}, [x0], #32
|
||||
st1 {v16.1d-v19.1d}, [x0], #32
|
||||
st1 {v20.1d-v23.1d}, [x0], #32
|
||||
st1 {v24.1d}, [x0]
|
||||
mov x0, x2
|
||||
ret
|
||||
SYM_FUNC_END(sha3_ce_transform)
|
||||
|
||||
|
||||
@@ -12,22 +12,15 @@
|
||||
|
||||
static __ro_after_init DEFINE_STATIC_KEY_FALSE(have_sha3);
|
||||
|
||||
asmlinkage size_t sha3_ce_transform(struct sha3_state *state, const u8 *data,
|
||||
size_t nblocks, size_t block_size);
|
||||
asmlinkage void sha3_ce_transform(struct sha3_state *state, const u8 *data,
|
||||
size_t nblocks, size_t block_size);
|
||||
|
||||
static void sha3_absorb_blocks(struct sha3_state *state, const u8 *data,
|
||||
size_t nblocks, size_t block_size)
|
||||
{
|
||||
if (static_branch_likely(&have_sha3) && likely(may_use_simd())) {
|
||||
do {
|
||||
size_t rem;
|
||||
|
||||
scoped_ksimd()
|
||||
rem = sha3_ce_transform(state, data, nblocks,
|
||||
block_size);
|
||||
data += (nblocks - rem) * block_size;
|
||||
nblocks = rem;
|
||||
} while (nblocks);
|
||||
scoped_ksimd()
|
||||
sha3_ce_transform(state, data, nblocks, block_size);
|
||||
} else {
|
||||
sha3_absorb_blocks_generic(state, data, nblocks, block_size);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user