Skip to content

Commit fd50171

Browse files
author
Eric Biggers
committed
lib/crypto: arm64/sha1: Remove obsolete chunking logic
Since commit aefbab8 ("arm64: fpsimd: Preserve/restore kernel mode NEON at context switch"), kernel-mode NEON sections have been preemptible on arm64. And since commit 7dadeaa ("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-1 code accordingly. Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20260401000548.133151-6-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
1 parent dec1061 commit fd50171

2 files changed

Lines changed: 9 additions & 20 deletions

File tree

lib/crypto/arm64/sha1-ce-core.S

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@
6262
.endm
6363

6464
/*
65-
* size_t __sha1_ce_transform(struct sha1_block_state *state,
66-
* const u8 *data, size_t nblocks);
65+
* void sha1_ce_transform(struct sha1_block_state *state,
66+
* const u8 *data, size_t nblocks);
6767
*/
68-
SYM_FUNC_START(__sha1_ce_transform)
68+
SYM_FUNC_START(sha1_ce_transform)
6969
/* load round constants */
7070
loadrc k0.4s, 0x5a827999, w6
7171
loadrc k1.4s, 0x6ed9eba1, w6
@@ -116,15 +116,11 @@ CPU_LE( rev32 v11.16b, v11.16b )
116116
add dgbv.2s, dgbv.2s, dg1v.2s
117117
add dgav.4s, dgav.4s, dg0v.4s
118118

119-
/* return early if voluntary preemption is needed */
120-
cond_yield 1f, x5, x6
121-
122119
/* handled all input blocks? */
123120
cbnz x2, 0b
124121

125122
/* store new state */
126-
1: st1 {dgav.4s}, [x0]
123+
st1 {dgav.4s}, [x0]
127124
str dgb, [x0, #16]
128-
mov x0, x2
129125
ret
130-
SYM_FUNC_END(__sha1_ce_transform)
126+
SYM_FUNC_END(sha1_ce_transform)

lib/crypto/arm64/sha1.h

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,15 @@
99

1010
static __ro_after_init DEFINE_STATIC_KEY_FALSE(have_ce);
1111

12-
asmlinkage size_t __sha1_ce_transform(struct sha1_block_state *state,
13-
const u8 *data, size_t nblocks);
12+
asmlinkage void sha1_ce_transform(struct sha1_block_state *state,
13+
const u8 *data, size_t nblocks);
1414

1515
static void sha1_blocks(struct sha1_block_state *state,
1616
const u8 *data, size_t nblocks)
1717
{
1818
if (static_branch_likely(&have_ce) && likely(may_use_simd())) {
19-
do {
20-
size_t rem;
21-
22-
scoped_ksimd()
23-
rem = __sha1_ce_transform(state, data, nblocks);
24-
25-
data += (nblocks - rem) * SHA1_BLOCK_SIZE;
26-
nblocks = rem;
27-
} while (nblocks);
19+
scoped_ksimd()
20+
sha1_ce_transform(state, data, nblocks);
2821
} else {
2922
sha1_blocks_generic(state, data, nblocks);
3023
}

0 commit comments

Comments
 (0)